stringByReplacing,有例外吗?

时间:2012-04-22 17:03:59

标签: iphone ios cocoa-touch

假设我有字符串:

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

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

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

我将如何做到这一点?

3 个答案:

答案 0 :(得分:8)

您可以使用regular expressions执行此类更复杂的字符串替换。

您可以使用negative lookbehind编写表达式,以找到前面没有 a (的{​​{1}}(尽管在这种情况下有更简单的替代方案) ,见@ sch的评论)。

示例:

+

答案 1 :(得分:2)

了解正则表达式here

的类似问题

您还可以执行以下操作作为没有regexp的quickfix(适用于您的示例中的简单格式化字符串):

  1. 将所有+(替换为[
  2. 将所有(替换为+
  3. 将所有[替换为+)
  4. 我认为[不是字符串语法的一部分。 (如果是使用不使用的那个)

答案 2 :(得分:0)

NSRegularExpressionClass提供以下方法:

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

这可能是你想要的。