我有以下字符串中NSTextView:卓越的表現由NSScanner
荷魯斯報復了他的父親奧西里斯
有分配給這個兩個標籤,Horus
和Osiris
。我使用NSScanner掃描兩個標籤的字符串,並在發現時用黃色背景突出顯示它們。
的代碼是:
for (Tag *aTag in tags) {
NSString *aTagName = [aTag name];
NSUInteger strLength = [aTagName length];
NSScanner *aScanner = [[NSScanner alloc] initWithString: aString];
[aScanner setCaseSensitive: YES];
[aScanner setScanLocation: 0];
BOOL result = [aScanner scanUpToString: aTagName intoString: nil];
while (![aScanner isAtEnd]) {
NSUInteger position = [aScanner scanLocation];
if (result) {
NSRange aRange = NSMakeRange(position, strLength);
[storage removeAttribute: NSBackgroundColorAttributeName range: aRange];
if (onOrOff) {
[storage addAttribute: NSBackgroundColorAttributeName value: aColor range: aRange];
}
position = position + [aTagName length];
[aScanner setScanLocation: position];
}
[aScanner scanUpToString: aTagName intoString: nil];
}
}
這當弗里斯特標籤(在上面的例子中它是Horus
)位於所述掃描串的最開始(位置= 0)失敗。未找到標記並且代碼保持循環。
然而,當我用替換字符串:
10年後報仇荷魯斯他的父親奧西里斯
...這所有的作品和我的兩個標籤中找到(如預期)和很好地突出顯示。
我錯過了什麼,或者這是NSScanner中的錯誤?