基本的正则表达式

时间:2011-12-20 05:05:15

标签: objective-c regex nsregularexpression

我想替换字符串中的尖括号和空格。例如,@"< something >"转到@"something"。我正在尝试:

NSString *s1 = @"< something >";
NSString *s2 =
[s1 stringByReplacingOccurrencesOfString:@"[<> ]"
                              withString:@""
                                 options:NSRegularExpressionSearch
                                   range:NSMakeRange(0, s1.length)];

然而,我对正则表达式并不陌生,@"[<> ]"似乎不起作用。用于删除尖括号和空格的正确正则表达式是什么?

2 个答案:

答案 0 :(得分:2)

请注意NSRegularExpressionSearch的文档:

  

您只能将此选项与rangeOfString:...方法一起使用。

所以即使你有正确的正则表达式,你也无法使用这种方法。

对于您描述的情况,使用包含'&lt;'字符集的-stringByTrimmingCharactersInSet:可能会更容易和''。

更新:Joshua Weinberg指出,您要删除所有出现的字符'&lt;','&gt;'和''。如果是这种情况,您将需要查看NSRegularExpression的-stringByReplacingMatchesInString:options:range:withTemplate:方法:

NSError *error = nil;
NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"<> " options:0 error:&error];
NSString *s1 = @"< something >";
NSRange range = NSMakeRange(0, s1.length);
NSString *s2 = [re stringByReplacingMatchesInString:s1 options:0 range:range withTemplate:@""];

(我没有测试过,但它应该指向正确的方向。)

答案 1 :(得分:1)

以下是解决字符的解决方案:'<''>'' '

NSCharacterSet*mySet = [NSCharacterSet characterSetWithCharactersInString:@"<> "];

NSString *s1 = @"< something >";

NSArray * components = [s1 componentsSeparatedByCharactersInSet:
                          mySet];
NSMutableString * formattedS1 = [NSMutableString string];
for (NSString * s in components) {
  [formattedS1 appendString:s];
}
NSLog(@"formatted string %@", formattedS1);

您可以将以后需要的任何字符添加到第一行