2

搜索由## $$ 括起来的子字符串的最佳方法是什么?例如,我有一些这样的文字:

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。

我想得到ipsumconsectetur这两个词。我知道我可以使用 NSString rangeofsubstring 方法,但是有更好的方法吗?基本上,找到一个由其他 2 个字符串包围的字符串?谢谢

4

2 回答 2

3

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

然后很容易通过结果匹配进行迭代(我的首选方法是使用枚举块,因为我们是 un 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 只会告诉您是否字符串匹配但不允许您获取子字符串...)

于 2011-06-29T19:19:54.113 回答
0

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

于 2011-06-29T19:08:02.627 回答