[英]How to replace a space exactly by “\_” in java String?
我有一个带空格的字符串,我希望用"\\_"
替换该空格。 例如,这是我的代码
String example = "Bill Gates";
example = example.replaceAll(" ","\\_");
例子的结果是:“Bill_Gates”不是“Bill \\ _Gates”。 当我尝试这样做
String example = "Bill Gates";
example = example.replaceAll(" ","\\\\_");
例子的结果是:“比尔\\\\ _盖茨”不是“比尔\\ _盖茨”
您需要使用replaceAll(" ","\\\\\\\\_")
而不是replaceAll(" ","\\\\_")
。 因为'\\\\'是文字。 它将被编译为'\\'单斜杠。 当你传递给replaceall
方法时。 它将第一个斜杠作为“_”的转义字符。 如果你看看里面的replaceall
方法
while (cursor < replacement.length()) {
char nextChar = replacement.charAt(cursor);
if (nextChar == '\\') {
cursor++;
if (cursor == replacement.length())
throw new IllegalArgumentException(
"character to be escaped is missing");
nextChar = replacement.charAt(cursor);
result.append(nextChar);
cursor++;
当它找到一个斜杠时,它将替换该斜杠的下一个字符。 所以你必须输入“\\\\\\\\ _”来替换方法。 然后它将被处理为“\\\\ _”。 方法将首先看斜杠并替换第二个斜杠。 然后它将取代下划线。
尝试:
String example = "Bill Gates";
example = example.replaceAll(" ","\\\\_");
System.out.println(example);
public static void main(String[] args) {
String example = "Bill Gates";
example = example.replaceAll(" ", "\\\\_");
System.out.println(example);
}
产量
Bill\_Gates
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.