Objective C:字符串标记化

Objective C: String tokenization

有没有好的方法来标记以下字符串?我想得到括号内的字母。

[快速]棕狐跳[到][直升机][直升机]上。

我想到的最简单的解决方案是用 [.然后我会迭代数组并用 ] 标记每个项目,返回第一个项目。为了提高效率,我会检查每个字符串以确保它包含有问题的标记,然后再进行更多涉及的处理。

但是,这似乎很老套而且很业余。另外,上面的示例将创建 5 个数组来处理字符串。有人有想法吗?

一个选项是使用正则表达式在您的字符串中搜索所需的值:

NSString *myString = @"The [quick] brown fox leaped [onto] the [heli][copter].";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression         
    regularExpressionWithPattern:@"\[.*?\]"
    options:NSRegularExpressionCaseInsensitive
    error:&error];
[regex enumerateMatchesInString:myString options:0 range:NSMakeRange(0, [myString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
    //Handle your matches here
}];

https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSRegularExpression_Class/

在这种情况下,返回的值仍会包含方括号。如果您只想要这些值,您可以删除每个值的括号,例如:

string = [string substringFromIndex:1];

string = [string substringToIndex:[string length] - 1];

RegEx 可以是 created/validated 例如:http://www.regexr.com

/edit:将 RegEx 更改为 Nikolai Ruhe 在评论中提出的那个。谢谢。