搜索由## $$ 括起来的子字符串的最佳方法是什么?例如,我有一些这样的文字:
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 个字符串包围的字符串?
谢谢
Best Answer-推荐答案 strong>
您可以使用 NSRegularExpression (警告:仅限 iOS4+)使用 RegEx 模式匹配您的子字符串(例如 @"##.*$$" 通常)。
然后很容易遍历结果匹配(我首选的方式是使用枚举 block ,因为我们是 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];
}
];
注意:如果需要支持pre-iOS4版本,可以查看NSPredicate 但它的灵 active 要差得多(......我猜对于iOS4之前的版本,使用rangeOfSubstring可能是最好的选择,因为NSPredicate只会告诉你字符串是否匹配但不允许你获取子字符串.. .)
关于objective-c - 搜索子字符串(NSString),我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/6525601/
|