截取包含表情符的字符串时,如何获取完整的字符长度?
在截取字符串时,有时我们需要考虑表情符字符,因为不同的表情符字符长度不一样,例如:😁的长度为2。
NSLog(@"length: %ld", @"😁".length); // 此处输出为:length: 2 NSLog(@"length: %ld", @"👴🏻".length); // 此处输出为:length: 4
因此我们在通过NSRange截取字符串时,我们需要获取到完整的字符长度,例如:abcd😁。
NSString *str = @"abcd😁"; // 如果你只是认为这个字符串长度为5,那你就错了,在执行下面代码时,substring不是你想要的 NSString *substring = [str substringWithRange:NSMakeRange(0, 5)]; NSLog(@"substring: %@", substring); // 此处输出为:abcd,系统会将错误的表情字符放弃,因为😁占2个字符长度,而你只截取了其中一半的字符
那么针对这种问题,我们可以通过以下方法,来获取包含完整表情符的字符长度
NSRange range = [str rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, 5)]; NSLog(@"location: %ld,length:%ld", range.location, range.length); // 此处输出为:location:0,length:6
这里输出的length为包含完整字符的长度:6而不是5
要得到你必须要付出,要付出你还要学会坚持,如果你真的觉得很难,那你就放弃,但是你放弃了就不要抱怨,我觉得人生就是这样,世界真的是平等的,每个人都要通过自己的努力,去决定自己生活的样子。