我使用代码清除将\\替换为\
NSString *str =@"\\u597d\\u6f02\\u4eae\\u7684\\u5a5a";
str= [str stringByReplacingOccurrencesOfString: @"\\\\" withString: @"\\" ];
但看起来stringByReplacingOccurrencesOfString不起作用。 它们都输出
\u597d\u6f02\u4eae\u7684\u5a5a
欢迎任何评论
答案 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
找不到要替换的内容。