使用stringByReplacingOccurrencesOfString替换\\

时间:2012-05-09 01:35:45

标签: iphone

我使用代码清除将\\替换为\

 NSString *str =@"\\u597d\\u6f02\\u4eae\\u7684\\u5a5a";

 str=    [str  stringByReplacingOccurrencesOfString: @"\\\\" withString: @"\\" ]; 

但看起来stringByReplacingOccurrencesOfString不起作用。 它们都输出

 \u597d\u6f02\u4eae\u7684\u5a5a

欢迎任何评论

2 个答案:

答案 0 :(得分:4)

这是因为源字符串不包含双斜杠:编译器在创建字符串常量的过程中使用所有双斜杠,并用单斜杠替换为最终字符串:

\u597d\u6f02\u4eae\u7684\u5a5a

在字符串常量中使用斜杠时,需要两个斜杠来表示一个斜杠。当你在传递给正则表达式的字符串常量中使用斜杠时,需要四个斜杠:编译器将使用四个斜线中的两个,然后正则表达式编译器将使用剩下的两个中的一个。

以下示例符合您的预期:

NSString *str =@"\\\\u597d\\\\u6f02\\\\u4eae\\\\u7684\\\\u5a5a";
NSLog(@"%@", str);
str=    [str  stringByReplacingOccurrencesOfString: @"\\\\" withString: @"\\" ];
NSLog(@"%@", str);

输出如下:

\\u597d\\u6f02\\u4eae\\u7684\\u5a5a
\u597d\u6f02\u4eae\u7684\u5a5a

答案 1 :(得分:0)

str中没有\\\\ - 您只能看到\\ ...这是您在第一个分配声明后打印出来的内容,所以stringByReplacingOccurrencesOfString找不到要替换的内容。