字符串的`endIndex`和`count`是不同的

时间:2016-05-04 21:46:03

标签: swift swift2

如何count String print("count:",self.Label.text!.characters.count) print("endIndex:",self.Label.text!.characters.endIndex) print("String:",self.Label.text!) 与swift2有什么不同?它是我使用的代码示例。当所有字符都只是英文时,它不会发生。

count: 32
endIndex: 34
String: • (دستور زبان) مفعول‌به، مفعول‌عنه

输出:

<button id="buttonsuccess" class="btn btn-success" onClick="FunctionSuccess()">button</button>

<script>
function FunctionSuccess(){
Lobibox.notify('success', {
iconSource: 'fontAwesome',
size: 'mini',
delay: 8000,
sound: false,
title: 'Success!',
msg: 'Success message here.'
});
}
</script>

1 个答案:

答案 0 :(得分:5)

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()
    }

结果

String: ìòè
count: 3
endIndex: 6
0:ì
2:ò
4:è