3

假设我有字符串:

@"(Mg(Ni+(N(O2)3";

我想知道是否可以替换字符串“(”的出现,但“+(”除外。因此结果;

@"+Mg+Ni+(N+O2)3";

我该怎么做呢?

4

3 回答 3

8

您可以使用正则表达式进行这种更复杂的字符串替换。

您可以使用否定的lookbehind来编写表达式以查找(前面没有a 的a +(尽管在这种情况下有更简单的替代方案,请参阅@sch 的评论)。

例子:

NSString *string = @"(Mg(Ni+(N(O2)3";
NSLog(@"Original string: %@", string);
NSString *pattern = @"(?<!\\+)\\(";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];   
NSString *modifiedString = [regex stringByReplacingMatchesInString:string 
                                                           options:0
                                                             range:NSMakeRange(0, [string length])
                                                      withTemplate:@"$1+"];
NSLog(@"After replacement: %@", modifiedString);
于 2012-04-22T17:16:21.707 回答
2

在此处阅读有关正则表达式的类似问题

您还可以在没有正则表达式的情况下作为快速修复执行以下操作(适用于您的示例中的简单格式化字符串):

  1. 全部替换+([
  2. 全部替换(+
  3. 全部替换[+)

我认为[这不是您的字符串语法的一部分。(如果是使用不使用的)

于 2012-04-22T17:16:05.887 回答
0

有一个NSRegularExpressionClass提供以下方法:

-(NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)template

这可能就是你想要的。

于 2012-04-22T17:17:22.403 回答