假设我有字符串:
@"(Mg(Ni+(N(O2)3";
我想知道是否可以替换字符串“(”的出现,但“+(”除外。因此结果;
@"+Mg+Ni+(N+O2)3";
我该怎么做呢?
假设我有字符串:
@"(Mg(Ni+(N(O2)3";
我想知道是否可以替换字符串“(”的出现,但“+(”除外。因此结果;
@"+Mg+Ni+(N+O2)3";
我该怎么做呢?
您可以使用正则表达式进行这种更复杂的字符串替换。
您可以使用否定的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);
在此处阅读有关正则表达式的类似问题
您还可以在没有正则表达式的情况下作为快速修复执行以下操作(适用于您的示例中的简单格式化字符串):
+(
为[
(
为+
[
为+)
我认为[
这不是您的字符串语法的一部分。(如果是使用不使用的)
有一个NSRegularExpressionClass
提供以下方法:
-(NSString *)stringByReplacingMatchesInString:(NSString *)string options:(NSMatchingOptions)options range:(NSRange)range withTemplate:(NSString *)template
这可能就是你想要的。