美文网首页基础知识
iOS面试题:NSString 如何计算字符的个数?

iOS面试题:NSString 如何计算字符的个数?

作者: iOS猿_员 | 来源:发表于2019-02-15 15:31 被阅读855次

NSString是UTF-16编码的, 也就是16位的unichar字符的序列. 所以, 一般遍历其每一个字符的方法就是:

for(int i=0; i<str.length; i++){
    unichar ch = [str characterAtIndex: i];
}

对于“👍🏼”这种Emoji,是用2个16位unichar来表示,它的Unicode是U+1F44D, 用(U+D83D U+DC4D)两个字符来表示。
幸好,NSString的rangeOfComposedCharacterSequencesForRange:和rangeOfComposedCharacterSequenceAtIndex:两个方法可以用来处理这种情况.

NSRange range;
for(int i=0; i<str.length; i+=range.length){
    range = [str rangeOfComposedCharacterSequenceAtIndex:i];
    NSString *s = [str attributedSubstringFromRange:range];
}

一次遍历一个子串, 而不是遍历一个unichar了.

相关文章

网友评论

    本文标题:iOS面试题:NSString 如何计算字符的个数?

    本文链接:https://www.haomeiwen.com/subject/zqfmeqtx.html