我尝试了一些算法,但没有运气解决这个问题。
让我们用一个例子来进一步解释这个行为
我们有一个字符串:@"example example"
所以如果我调用 rangeOfWordAtIndex:10
字符串。
结果将是:@"example"
位置 9 处的单词长度为 7。
它不应该给@"example" at index 0 with a length of 7
。
这是我到目前为止生成的代码:
#define unicode_space 32 // this is correct printed it out from code
@implementation NSString (wordAt)
- (NSRange) rangeOfWordAtIndex:(NSInteger) index
{
NSInteger beginIndex = index;
while(beginIndex > 0 && [self characterAtIndex:beginIndex-1] != unicode_space)
{
beginIndex--;
}
NSInteger endIndex = index;
NSInteger sLenght = [self length];
while (endIndex < sLenght && [self characterAtIndex:endIndex+1] != unicode_space)
{
endIndex++;
}
return NSMakeRange(beginIndex, endIndex - beginIndex);
}
@end
但它只是行不通。如果没有 +1 和 -1,它会保留一个空格作为单词的一部分。
并用它忘记了单词的第一个字符。
有人可以提供一些有用的建议。