Java反斜杠字符不在字符串中输出

时间:2014-06-25 05:14:46

标签: java

我试图替换文件中的某些文本,而字符串包含一个需要反斜杠的文件路径,通常使用" \"工作正常并在输出上产生一个\但我当前的代码没有输出任何反斜杠

String newConfig = readOld().replaceAll(readOld(),"[HKEY_CURRENT_USER\\Software\\xxxx\\xxxx\\Config]");

2 个答案:

答案 0 :(得分:2)

"\"开始escape sequence

  

以反斜杠(\)开头的字符是转义序列,对编译器有特殊意义。

所以,(或许可笑)

String old = readOld();
String newConfig = old.replaceAll(old,
    "[HKEY_CURRENT_USER\\\\Software\\\\xxxx\\\\xxxx\\\\Config]");

或者,

String old = readOld();
char backSlash = '\\';
String newConfig = old.replaceAll(old,
    "[HKEY_CURRENT_USER" + backSlash + backSlash + "Software"
    + backSlash + backSlash + "xxxx"
    + backSlash + backSlash + "xxxx"
    + backSlash + backSlash + "Config]");

答案 1 :(得分:1)

您应该在这里使用replace,因为您的readOld()方法可能会有+,*,. etc.中保留的某些特殊字符(即regExp),因此最好使用replace。(由于replaceAll可能会因无效的正则表达式而抛出Exception

String newConfig = readOld().replace(readOld(),"replacement");

此处似乎您正在替换整个String,为什么不直接将String分配给newConfig


来自JavaDoc for replaceAll

  替换中的

反斜杠(\)和美元符号($)   字符串可能会导致结果与正确的结果不同   被视为文字替换字符串

因此,请转到\\\\中的Elliott Frinch(由String建议)或使用replace