【问题标题】:Basic regex expression基本正则表达式
【发布时间】:2012-01-24 03:45:42
【问题描述】:

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

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

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

【问题讨论】:

  • 如果我错了请纠正我,但我不相信-stringByReplacingOccurrencesOfString:withString: 使用正则表达式,它只是一个简单的查找/替换。

标签: objective-c regex nsregularexpression


【解决方案1】:

注意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:@""];

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

【讨论】:

  • 问题是修剪只会把它们从头到尾去掉,他需要在整个过程中替换它们。 NSRegularExpression 可能是最好的选择。
  • 您引用了文档说“您只能将此选项与 rangeOfString:... 方法一起使用”,但文档继续说,“和 stringByReplacingOccurrencesOfString:withString:options:range:”这句话是他使用的确切方法。
【解决方案2】:

这是一个去除字符的解决方案:'&lt;','&gt;',' '

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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    • 2012-01-04
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多