NSString或NSMutableString中的字符数?

4th*_*ace 22 cocoa objective-c

我试过这个

NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString: myString];
[myCharSet count];
Run Code Online (Sandbox Code Playgroud)

但是要警告NSCharacterSet可能无法响应计数.这适用于桌面应用而不是iPhone,我认为上面的代码可以使用.

Mat*_*all 80

我可能在这里遗漏了一些东西,但是简单地做了什么是错的:

NSUInteger characterCount = [myString length];
Run Code Online (Sandbox Code Playgroud)

为了获得字符串中的字符数,我没有看到任何使用NSCharacterSet的理由.

  • 为了清楚起见,`-length`返回`接收器中的Unicode字符数.(由`NSString`文档定义).从技术上讲,文档是错误的,因为它实际上返回"UTF-16代码单元数"而不是"Unicode字符数".这种区别对于绝大多数程序员和使用来说并不重要,但它确实会产生重要的后果.例如,`[@"\ U0010ffff"length]`返回`2`,即使它包含一个Unicode字符.`characterAtIndex:`for`0`和`1`分别返回`0xdbff`和`0xdfff`. (16认同)
  • ^这是非常重要的,因为现在大多数iOS用户使用emojis键入,使用上面提到的`length`方法将其视为2个字符...即使它是1个字符. (9认同)