字符串截取 - rangeOfComposedCharacterSequenceAtIndex的使用

rangeOfComposedCharacterSequenceAtIndex

emoji表情

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

>>> 2

emoji表情在字符串中是以2個(gè)長(zhǎng)度來(lái)處理的

當(dāng)遇到字符串截取時(shí),如果截?cái)辔恢脛偤迷趀moji表情的中間。此時(shí)emoji表情就會(huì)出現(xiàn)無(wú)法解碼。如下面的情況

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

所以這種情況下需要判斷所在的位置是否為emoji,判斷所在位置是否是emoji表情的中間??梢酝ㄟ^(guò)這個(gè)方法rangeOfComposedCharacterSequenceAtIndex

這個(gè)方法的意思是,將emoji表情視為一個(gè)連續(xù)的字符串,如果index處于連續(xù)的字符串之間,就會(huì)返回這個(gè)字符串的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

所以,當(dāng)遇到字符串截取時(shí),可以通過(guò)該方法來(lái)檢測(cè)是否會(huì)截取斷emoji表情。如果剛好截取斷emoji表情,可以截取到emoji之前或?qū)moji也包括在內(nèi)

NSString *str = @"";
const NSInteger lengthLimit = 100;
NSRange range = [str rangeOfComposedCharacterSequenceAtIndex:lengthLimit];
NSString *subStr = [str substringToIndex:range.location];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評(píng)論 25 709
  • (原創(chuàng)首發(fā),不得轉(zhuǎn)載) 親,打聽(tīng)一下甘蔗的吃法? 呵呵,哪頭甜先吃哪頭唄! 哦。
    財(cái)?shù)?/span>閱讀 394評(píng)論 5 7
  • 我時(shí)常會(huì)感謝生活,因?yàn)樵谝粭l路被堵死的時(shí)候,往往等待著我的是另一條更好的路。多年的生活經(jīng)驗(yàn)告訴我,得失無(wú)從計(jì)較。我...
    飛行家Leo閱讀 301評(píng)論 0 2
  • 今天是辭舊迎新的一天,也是對(duì)去年一年的總結(jié),對(duì)來(lái)年一個(gè)目標(biāo)的確定。 先說(shuō)說(shuō)在2016年的總結(jié)。如果不...
    尊重生命向生活致敬段天譽(yù)閱讀 195評(píng)論 0 0

友情鏈接更多精彩內(nèi)容