如何从NSString中删除前N个单词?
例如...“我去商店买牛奶。”我想删除前三个词以使其成为...
“商店买牛奶。” (请注意,单词“the”之前也没有空格)。
谢谢!
最佳答案
这个问题可以改写为“如何从字符串中的第四个单词开始获得子字符串?”,这稍微容易解决。我在这里还假设少于4个单词的字符串应该为空。
无论如何,这里的主力是-enumerateSubstringsInRange:options:usingBlock:
,我们可以使用它找到第四个单词。
NSString *substringFromFourthWord(NSString *input) {
__block NSUInteger index = NSNotFound;
__block NSUInteger count = 0;
[input enumerateSubstringsInRange:NSMakeRange(0, [input length]) options:(NSStringEnumerationByWords|NSStringEnumerationSubstringNotRequired) usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
if (++count == 4) {
// found the 4th word
index = substringRange.location;
*stop = YES;
}
}];
if (index == NSNotFound) {
return @"";
} else {
return [input substringFromIndex:index];
}
}
这种工作方式是我们要求
-enumerateSubstrings...
用单词枚举。当我们找到第四个单词时,我们将保留其起始位置并退出循环。现在我们有了第四个单词的开头,我们可以从该索引中获取子字符串。如果我们没有得到4个单词,我们将返回@""
。
关于iphone - iOS从NSString中删除前N个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15370651/