搜索子串(NSString)

时间:2011-06-29 18:42:21

标签: objective-c ios cocoa-touch nsstring substr

搜索## $$附带的子字符串的最佳方法是什么。例如,我有一些这样的文字:

Lorem ## ipsum $$ dolor sit amet, ## consectetur $$ adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。

我希望得到 ipsum consectetur 这两个词。我知道我可以做NSString rangeofsubstring方法,但是有更好的方法吗?基本上,找到一个由2个其他字符串括起来的字符串? 感谢

2 个答案:

答案 0 :(得分:3)

您可以使用NSRegularExpression(警告:仅限iOS4 +)使用RegEx模式匹配您的子字符串(通常为@"##.*$$")。

然后很容易通过生成的匹配进行迭代(我的首选方法是使用枚举块,因为我们不是iOS4: - )):

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"##(.*)$$" options:NSRegularExpressionCaseInsensitive error:nil];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:
    ^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop) {
        NSRange range = [match rangeAtIndex:1]; // range of string in first parens
        NSString* oneWord = [yourString substringWithRange:range];
    }
];

注意:如果您需要支持iOS4之前的版本,可以查看NSPredicate,但它的灵活性要低得多......(我想对于iOS4之前的版本,使用rangeOfSubstring可能是无论如何最好的选择,因为NSPredicate只会告诉你字符串是否匹配但不允许你获得子字符串......)

答案 1 :(得分:0)

迭代字符串字符,搜索“##”,然后搜索最近的“$$”。