嗨,我们有一个像"ami\\303\\261o"
. 我们要替换\\
为\
.
我们尝试了以下方法:
replace("\\", "\")
replaceAll("\\", "\")
但是我们没有得到正确的输出。
这里不需要正则表达式。转义斜线并使用 replace()
someString.replace('\\\\', '\\');
您必须牢记反斜杠转义。利用
public class so {
public static void main(String[] args) {
String s = "ami\\\\303\\\\261o";
System.out.println(s);
s = s.replace("\\\\", "\\");
System.out.println(s);
}
};
每个反斜杠转义以下反斜杠并解析为两个文字字符串\\
和\
还要记住,String.replace
返回修改后的字符串并保持原始字符串不变。
要在 Java 正则表达式中使用,您需要对反斜杠进行两次转义:
resultString = subjectString.replaceAll("\\\\\\\\", "\\\\");
\\
表示“文字反斜杠”。"\\"
对单个反斜杠进行编码。"\\\\"
"\\\\\\\\"
相应地是 。那是因为\\
您的输入 String 内部\
由于Java Escape Character而在内部被替换。
这意味着如果你输出你的字符串而不对其执行任何正则表达式,它看起来像这样"ami\303\261o"
:
通常,您应该记住使用自身转义每个转义字符:
\ -> escaped = \\
\\ -> escaped = \\\\
\\\ -> escaped = \\\\\\
...and so on
试试下面的代码
String val = "ami\\303\\261o";
val =val.replaceAll("\\\\", "\\\\");
System.out.println(val);
输出将是
亲\303\261o
在这里创建了一个 Fiddle 检查它