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
}];
在这种情况下,返回的值仍会包含方括号。如果您只想要这些值,您可以删除每个值的括号,例如:
string = [string substringFromIndex:1];
和
string = [string substringToIndex:[string length] - 1];
RegEx 可以是 created/validated 例如:http://www.regexr.com
/edit:将 RegEx 更改为 Nikolai Ruhe 在评论中提出的那个。谢谢。
有没有好的方法来标记以下字符串?我想得到括号内的字母。
[快速]棕狐跳[到][直升机][直升机]上。
我想到的最简单的解决方案是用 [.然后我会迭代数组并用 ] 标记每个项目,返回第一个项目。为了提高效率,我会检查每个字符串以确保它包含有问题的标记,然后再进行更多涉及的处理。
但是,这似乎很老套而且很业余。另外,上面的示例将创建 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
}];
在这种情况下,返回的值仍会包含方括号。如果您只想要这些值,您可以删除每个值的括号,例如:
string = [string substringFromIndex:1];
和
string = [string substringToIndex:[string length] - 1];
RegEx 可以是 created/validated 例如:http://www.regexr.com
/edit:将 RegEx 更改为 Nikolai Ruhe 在评论中提出的那个。谢谢。