iphone - iOS从NSString中删除前N个单词

标签 iphone ios nsstring nsregularexpression

如何从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/

相关文章:

iphone - 正确使用@private变量/属性

ios - 如何动态准备选择器以与respondsToSelector匹配

iphone - 如何分发 iPhone 应用程序以在测试计算机上的 iPhone 模拟器中进行测试?

iphone - 滚动时禁用 UITableView 垂直弹跳

ios - 如何在 Objective-C 中将 NSString 转换为 NSMutableString?

ios - 更改 UISearchbar 放大镜颜色、PlaceHolder 颜色和 X 颜色

ios - 在自定义 UITableviewCell 中设置图像不会*粘*

ios - 导航 Controller - 导航栏未显示在 child 身上

iphone - 如何在 HTML 文档中找到数字然后用作 NSString?

cocoa - 如何以一定角度绘制 NSString?