遍历NSString每一个字符的正确方式

贴代码:



- (void)compare2{
    
    NSString *theString = @"a👌3👌";
    NSLog(@"theString--->%@",theString);
    
    //方法一(错误,emoji不打印)
    for (int i = 0; i < theString.length; i++) {
        unichar ch = [theString characterAtIndex:i];
        NSString *everyString = [NSString stringWithCharacters:&ch length:1];
        NSLog(@"everyString--->%@",everyString);
    }
    //打印:
    /*
     everyString--->a
     everyString--->3
     */
    
    
    //方法二(错误,emoji打印2次)
    NSRange range ;
    NSRange stringRange = [theString rangeOfString:theString];// log:location=0, length=6
    for (int i = 0; i < theString.length; i++) {
        range = [theString rangeOfComposedCharacterSequenceAtIndex:i];
        NSString *everyString = [theString substringWithRange:range];
        NSLog(@"everyString--->%@",everyString);
    }
    //打印:
    /*
    everyString--->a
    everyString--->👌
    everyString--->👌
    everyString--->3
    everyString--->👌
    everyString--->👌
     */
    
    
    
    //方法三(正确,可打印emoji)
    for(int i=0; i<theString.length; i+=range.length){
        range = [theString rangeOfComposedCharacterSequenceAtIndex:i];
        NSString *s = [theString substringWithRange:range];
        NSLog(@"s--->%@",s);
    }
    //打印:
    /*
     s--->a
     s--->👌
     s--->3
     s--->👌
     */
    
    
    
}


方法二和三区别在于:i++ 和 i+=range.length
emoji表情占两个字符位置

参考文章:
https://www.douban.com/note/299691317/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,119评论 25 709
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,757评论 2 45
  • 近期做什么事都是三分热度,看书进度也异常缓慢,案头摆着《自控力》却提不起精神来细细品读。 2017年眨眼间,二月即...
    依然如水阅读 1,787评论 0 0
  • 成功之路需要勤奋的汗水,而懒惰就会一事无成。回顾历史,成功者无不勤奋付出。 古人云业精于勤,荒于嬉。要勤劳不能将时...
    未知未来阅读 1,706评论 1 2

友情链接更多精彩内容