ios - 检测在 NSString 中占用多个索引点的字符的方法?

标签 ios cocoa-touch nsstring

我想知道,有没有办法检测一个在 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/

相关文章:

core-data - Core Data 属性设置的类型转换

ios - 如何删除链接的 <a href> </a> 颜色?

iphone - MonoTouch 是否需要 Mac 才能发布到 iPhone/iPod Touch?

iphone - 在 Quartz 中绘制方程

ios - NSString 为每 4 个字符附加 WhiteSpace

xcode - 在 Swift 中从 NSString 创建 NSData

iphone - 什么时候使用存档: method of NSManagedObjectContext

c# - CrossMediaManager.Current.Play 不在 iOS xamarin.forms 上播放本地音频文件

ios - 如何以编程方式确定用户是否从 iOS 中的 Adwords 转换而来,或者是否可以将此数据转换为用户属性?

ios - 无法将 UIViewController 限制为仅纵向