作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我不明白为什么在下面的代码中,将要打印的扩展范围是“位置:1,长度:1”。为什么范围长度从 0 扩展到 1?
NSString * text = @"abc";
NSRange range = NSMakeRange(1, 0);
NSRange extendedRange = [text rangeOfComposedCharacterSequencesForRange:range];
NSLog(@"extended range: location %d, length : %d ",extendedRange.location,extendedRange.length);
文档说这样做的结果是:
The range in the receiver that includes the composed character sequences in range.
有以下讨论
This method provides a convenient way to grow a range to include all composed character sequences it overlaps.
但是文本@"abc"不包含任何组合字符,这让我认为结果应该是相同的范围,未修改,而且无论如何,我认为长度为 0 的范围不会与任何字符重叠。
这对我来说看起来像是一个错误,但我可能漏掉了一些东西。那是正常的吗?
最佳答案
这可能是一个错误。
rangeOfComposedCharacterSequencesForRange:
的实现只是调用 rangeOfComposedCharacterSequenceAtIndex:
两次,使用范围的开始和结束索引,并返回组合范围。
文档没有明确说明所提供范围边缘的字符从不包括在内,但我同意观察到的行为感觉不对。
你应该file a bug .
关于ios - rangeOfComposedCharacterSequencesForRange 将 0 个字符范围转换为 1 个字符范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155913/
我不明白为什么在下面的代码中,将要打印的扩展范围是“位置:1,长度:1”。为什么范围长度从 0 扩展到 1? NSString * text = @"abc"; NSRange range = NSM
我是一名优秀的程序员,十分优秀!