这怎么可能endIndex和count一个String在swift2不同?它是我用过的代码示例.当所有字符都只是英文时,它不会发生.
print("count:",self.Label.text!.characters.count)
print("endIndex:",self.Label.text!.characters.endIndex)
print("String:",self.Label.text!)
Run Code Online (Sandbox Code Playgroud)
输出:
count: 32
endIndex: 34
String: • (????? ????) ????????? ?????????
Run Code Online (Sandbox Code Playgroud)
原始值String.CharacterView.Index无关紧要,不应使用.其原始值仅具有String和CharacterView中的含义.
在您的情况下,一些Unicode字符仅仅组合修改相邻字符的字符以形成单个字形.例如,U + 0300,结合严重重音:
let str = "i\u{0300}o\u{0300}e\u{0300}"
print("String:",str)
print("count:",str.characters.count)
print("endIndex:",str.characters.endIndex)
var i = str.characters.startIndex
while i < str.characters.endIndex
{
print("\(i):\(str.characters[i])")
i = i.successor()
}
Run Code Online (Sandbox Code Playgroud)
结果是
String: ìòè
count: 3
endIndex: 6
0:ì
2:ò
4:è
Run Code Online (Sandbox Code Playgroud)