有没有一种很好的方法来标记以下字符串?我想得到括号之间的字母。
[快速]棕色狐狸跳到了[heli] [直升机]上。
我想到的最简单的解决方案是用[。将初始字符串标记为数组。然后我会迭代数组并使用]标记每个项目,返回第一个项目。为了提高效率,我会检查每个字符串,以确保在进行更多相关处理之前它包含有问题的令牌。
然而,这似乎是hackish和业余。另外,上面的示例将创建5个数组来处理字符串。有人有想法吗?
答案 0 :(得分:1)
一个选项是使用正则表达式在字符串中搜索所需的值:
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
}];
在这种情况下,返回的值仍将包含括号。如果您只想要这些值,则可以删除每个值的括号,如:
string = [string substringFromIndex:1];
和
string = [string substringToIndex:[string length] - 1];
可以创建/验证RegEx,例如:http://www.regexr.com
/ edit:将RegEx改为Nikolai Ruhe评论中提出的那个。感谢。