您好我们有一个像"ami\\303\\261o"
这样的字符串。我们希望将\\
替换为\
。
我们尝试过以下方法:
replace("\\", "\")
replaceAll("\\", "\")
但我们没有得到正确的输出。
答案 0 :(得分:3)
要在Java正则表达式中使用,您需要两次转义反斜杠:
resultString = subjectString.replaceAll("\\\\\\\\", "\\\\");
\\
表示“字面反斜杠”。"\\"
对单个反斜杠进行编码。"\\\\"
"\\\\\\\\"
。答案 1 :(得分:3)
你必须记住反斜杠逃避。使用
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
会返回修改后的字符串并保持原始字符串不变。
答案 2 :(得分:3)
这里不需要正则表达式。转义斜杠并使用replace()
someString.replace('\\\\', '\\');
答案 3 :(得分:0)
这是因为输入字符串中的\\
由于Java Escape Character而被\
内部替换为"ami\303\261o"
。
这意味着如果输出String而不对其执行任何正则表达式,它将如下所示:\ -> escaped = \\
\\ -> escaped = \\\\
\\\ -> escaped = \\\\\\
...and so on
。
一般来说,你应该记得自己逃避每个转义字符:
{{1}}
答案 4 :(得分:0)
尝试以下代码
String val = "ami\\303\\261o";
val =val.replaceAll("\\\\", "\\\\");
System.out.println(val);
Outpout将是
AMI \ 303 \ 261o
这里创建了一个小提琴,请查看