美文网首页面试宝点
字符串截取 - rangeOfComposedCharacter

字符串截取 - rangeOfComposedCharacter

作者: 一双鱼jn | 来源:发表于2017-10-31 11:06 被阅读110次

rangeOfComposedCharacterSequenceAtIndex

emoji表情

NSString *str = @"😝";
NSLog(@"%lu",str1.length);

>>> 2

emoji表情在字符串中是以2个长度来处理的

当遇到字符串截取时,如果截断位置刚好在emoji表情的中间。此时emoji表情就会出现无法解码。如下面的情况

NSString *str = @"😝";
NSString *subStr = [str substringToIndex:1];

所以这种情况下需要判断所在的位置是否为emoji,判断所在位置是否是emoji表情的中间。可以通过这个方法rangeOfComposedCharacterSequenceAtIndex

这个方法的意思是,将emoji表情视为一个连续的字符串,如果index处于连续的字符串之间,就会返回这个字符串的range。

如下效果

NSString *str1 = @"😝";
NSRange range = [str1 rangeOfComposedCharacterSequenceAtIndex:1];
NSLog(@"loc:%lu, len:%lu",range.location,range.length);

>>> loc:0, len:2
NSString *str1 = @"hello 😝 world";
NSRange range = [str1 rangeOfComposedCharacterSequenceAtIndex:6];
NSLog(@"loc:%lu, len:%lu",range.location,range.length);

>>> loc:6, len:2


NSRange range = [str1 rangeOfComposedCharacterSequenceAtIndex:7];
NSLog(@"loc:%lu, len:%lu",range.location,range.length);

>>> loc:6, len:2

所以,当遇到字符串截取时,可以通过该方法来检测是否会截取断emoji表情。如果刚好截取断emoji表情,可以截取到emoji之前或将emoji也包括在内

NSString *str = @"";
const NSInteger lengthLimit = 100;
NSRange range = [str rangeOfComposedCharacterSequenceAtIndex:lengthLimit];
NSString *subStr = [str substringToIndex:range.location];

相关文章

  • 字符串截取 - rangeOfComposedCharacter

    rangeOfComposedCharacterSequenceAtIndex emoji表情 emoji表情在字...

  • mac 终端常见命令

    切换shell 截取字符串 shell字符串的截取 shell字符串的截取 Shell脚本8种字符串截取方法总...

  • swift-字符串截取 截取指定字符前面或后面的字符串

    截取‘:’前面所有的字符串 截取‘:’前面所有的字符串(结果包含‘:’) 截取':'后面的所有字符串 截取':'后...

  • iOS 字符串常见处理

    一、截取字符串 iOS “字符串” 的几种常见的截取方法(随时更新)iOS截取字符串,分割字符串iOS 截取字符串...

  • OC - NSString

    1.字符串的截取 字符串的截取用: 字符串 +substring..如果开始就截取用from, 如果截取到用to。...

  • OC 字符串的截取

    1、字符串截取 2、从指定位置开始截取n个长度 3、分隔字符串 4、字符串的截取替换 5、替换掉截取某部分的字符串...

  • Swift字符串截取

    NSString类型的字符串截取 NSString类型的字符串截取方法,同于OC语言的字符串截取方法,不能修改字符...

  • MySQL字符串截取的4个函数

    mysql字符串截取的4个函数 tags:mysql 字符串截取 1、从左开始截取字符串 left(str, le...

  • shell截取字符串

    获取字符串长度 最小限度从前面截取字符串 最大限度从前面截取字符串 最小限度从后面截取字符串 最大限度从后面截取字...

  • sql常用函数

    SUBSTRING():截取字符串参数1:字符串参数2:截取开始位置参数3:截取字符串的长度 LEFT():返回指...

网友评论

    本文标题:字符串截取 - rangeOfComposedCharacter

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