그림 문자 개수
스위프트 글이 숫자가 안 나와서 대안 노트
추기 2015년 12월 20일입니다.
안 좋은 점이 있다면 국기의 그림과 문자가 여러 개 나란히 놓여 있으면 한 글자와 함께 계산하는 것이다.
var str = "abc"
println("\(str): \(count(str))")
// abc: 3 …問題ない
str = "🇯🇵"
println("\(str): \(count(str))")
// 🇯🇵: 1 …問題ない
str = "🇯🇵🇧🇷🇨🇭"
println("\(str): \(count(str))")
// 🇯🇵🇧🇷🇨🇭: 1 …どうかしてる
어쨌든 이런 느낌으로 대책을 세우자extension String
{
func unicodeCount() -> UInt
{
var cnt2:UInt = 0
for c in self.unicodeScalars {
switch c.value {
// Combining Diacritical Marks for Symbols
case 0x20D0...0x20FF:
break
// Variation Selectors
case 0xFE00...0xFE0F:
break
// Regional Indicator symbols
case 0x1F1E6...0x1F1FF:
cnt2++
default:
cnt2 += 2
}
}
return cnt2/2
}
}
var str = "abc"
println("\(str): \(str.unicodeCount())")
// abc: 3 …問題ない
str = "🇯🇵"
println("\(str): \(str.unicodeCount())")
// 🇯🇵: 1 …問題ない
str = "🇯🇵🇧🇷🇨🇭"
println("\(str): \(str.unicodeCount())")
// 🇯🇵🇧🇷🇨🇭: 3 …問題ない
좋잖아.낙서해야 해서 안 썼는데 동그라미도 돼요.Objective-C라면 이렇게 하면 돼요.
http://qiita.com/matsuokah/items/a435e3c86318a793d307
컨디션
추기 2015/12/20
스위프트 2.1로 바뀌었기 때문에 새로운 그림문자도 늘었다.
우선 일반적인 계수
var str = "abc"
print("\(str): \(str.characters.count)")
// abc: 3 …問題ない
str = "🇯🇵"
print("\(str): \(str.characters.count)")
// 🇯🇵: 1 …問題ない
str = "🇯🇵🇧🇷🇨🇭"
print("\(str): \(str.characters.count)")
// 🇯🇵🇧🇷🇨🇭: 1 …やっぱりどうかしてる
str = "🤕🤒"
print("\(str): \(str.characters.count)")
// 🤕🤒: 2 …問題ない
str = "🖖🏾🤘🏿🖐🏻"
print("\(str): \(str.characters.count)")
// 🖖🏾🤘🏿🖐🏻: 6 …どうかしてる
마지막에 여섯 글자라고 생각할 수도 있어요.Xcode7.2를 봤는데 역시 뭔가 이상해(iOS 9.1도 마찬가지)
새로운 그림문자를 넣었기 때문에 대책도 수정됐다.
extension String
{
func unicodeCount() -> UInt
{
var cnt2:UInt = 0
for c in self.unicodeScalars {
switch c.value {
// Combining Diacritical Marks for Symbols
case 0x20D0...0x20FF:
break
// Variation Selectors
case 0xFE00...0xFE0F:
break
// Regional Indicator symbols
case 0x1F1E6...0x1F1FF:
cnt2 += 1
// Fitzpatrick skin type
case 0x1F3FB...0x1F3FF:
break
default:
cnt2 += 2
}
}
return cnt2/2
}
}
한번 해 보았다.var str = "abc"
print("\(str): \(str.unicodeCount())")
// abc: 3 …問題ない
str = "🇯🇵"
print("\(str): \(str.unicodeCount())")
// 🇯🇵: 1 …問題ない
str = "🇯🇵🇧🇷🇨🇭"
print("\(str): \(str.unicodeCount())")
// 🇯🇵🇧🇷🇨🇭: 3 …問題ない
str = "🤕🤒"
print("\(str): \(str.unicodeCount())")
// 🤕🤒: 2 …問題ない
str = "🖖🏾🤘🏿🖐🏻"
print("\(str): \(str.unicodeCount())")
// 🖖🏾🤘🏿🖐🏻: 3 …問題ない
네.네.
Reference
이 문제에 관하여(그림 문자 개수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miyakeryo/items/60b00c7541db9fa2182b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)