Ios RangeofComposedCharacterSequences安排将0个字符范围转换为1个字符范围
我不明白为什么在下面的代码中,将要打印的扩展范围是 “位置:1,长度:1”。为什么范围长度从0扩展到1Ios RangeofComposedCharacterSequences安排将0个字符范围转换为1个字符范围,ios,objective-c,unicode,nsstring,Ios,Objective C,Unicode,Nsstring,我不明白为什么在下面的代码中,将要打印的扩展范围是 “位置:1,长度:1”。为什么范围长度从0扩展到1 NSString * text = @"abc"; NSRange range = NSMakeRange(1, 0); NSRange extendedRange = [text rangeOfComposedCharacterSequencesForRange:range]; NSLog(@"extended range: location %d, length : %d ",exten
NSString * text = @"abc";
NSRange range = NSMakeRange(1, 0);
NSRange extendedRange = [text rangeOfComposedCharacterSequencesForRange:range];
NSLog(@"extended range: location %d, length : %d ",extendedRange.location,extendedRange.length);
文件说,结果是:
接收器中包含合成字符的范围
范围内的序列
进行以下讨论
但是文本@“abc”不包含任何组合字符,这使我认为结果应该是相同的范围,未经修改,而且无论如何,我认为长度为0的范围不会与任何字符重叠
对我来说这看起来像个虫子,但我可能错过了什么。这正常吗 组合字符序列的范围安排:如
返回值
接收机中的范围,包括范围中的合成字符序列
讨论
该方法提供了一种方便的方法,可以将范围扩大到包含其重叠的所有合成字符序列
由于位置
有效,因此考虑到该位置的字符重叠范围
,这可能是一个错误
rangeOfComposedCharacterSequencesForRange:
的实现只需调用rangeOfComposedCharacterSequenceAtIndex:
两次,使用范围的开始索引和结束索引,并返回组合范围
文档中没有明确说明所提供范围边缘的字符从未包含在内,但我同意观察到的行为感觉是错误的
您应该。您链接到的文档不是rangeOfComposedCharacterSequencesForRange中的文档。你认为这是链接吗?链接对我很有用,如果你转到NSString的文档,然后搜索
RangeofComposeCharacterSequencesOrrange:
你会找到它,你也可以从组织中找到它。我看不出长度0的范围如何可以重叠任何内容。对我来说,这听起来仍然像一个bug。我同意你的观点,我只是想找到一个逻辑解释,我认为你应该提交一个bug
This method provides a convenient way to grow a range to include all composed character sequences it overlaps.