搜索## $$附带的子字符串的最佳方法是什么。例如,我有一些这样的文字:
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个其他字符串括起来的字符串? 感谢
答案 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)
迭代字符串字符,搜索“##”,然后搜索最近的“$$”。