我想知道,有没有办法检测一个在 NSString 中占据超过 1 个索引点的字符? (如表情符号)。我正在尝试实现自定义 TextView ,当用户推送删除时,我需要知道是否应该只删除前一个索引点或更多。
最佳答案
其实NSString
使用 UTF-16
.所以很难处理需要two UTF-16 charater(unichar) or more
的字符.但是你可以用rangeOfComposedCharacterSequenceAtIndex
获取范围而不是删除。
首先从字符串中找到最后一个字符索引
NSUInteger lastCharIndex = [str length] - 1;
比得到最后一个字符的范围
NSRange lastCharRange = [str rangeOfComposedCharacterSequenceAtIndex: lastCharIndex];
比从字符范围删除(如果它是两个 UTF-16,则删除 UTF-16)
deletedLastCharString = [str substringToIndex: lastCharRange.location];
您可以将此方法用于任何类型的
characters
它需要任意数量的 unichar
关于ios - 检测在 NSString 中占用多个索引点的字符的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981212/