2

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

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

但是,我对正则表达式是全新的,@"[<> ]"似乎不起作用。删除尖括号和空格的正确正则表达式是什么?

4

2 回答 2

2

请注意以下文档NSRegularExpressionSearch

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

因此,即使您有正确的正则表达式,您也无法通过这种方法使用它。

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

更新: Joshua Weinberg 指出您想删除所有出现的字符“<”、“>”和“”。如果是这种情况,您将需要查看 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:@""];

(我尚未对此进行测试,但它应该为您指明正确的方向。)

于 2011-12-20T05:11:36.790 回答
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);

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

于 2011-12-20T06:03:08.597 回答