我有一个带空格的字符串,我希望用 "\_"
替换该空格
.例如这里是我的代码
String example = "Bill Gates";
example = example.replaceAll(" ","\\_");
示例的结果是:“Bill_Gates”而不是“Bill\_Gates”。当我尝试这样做时
String example = "Bill Gates";
example = example.replaceAll(" ","\\\\_");
例子的结果是:“Bill\\_Gates”不是“Bill\_Gates”
最佳答案
您需要使用 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++;
当它找到一个斜杠时,它将替换该斜杠的下一个字符。所以你必须输入“\\\\_”来替换方法。那么它将被处理为“\\_”。方法将查找第一个斜杠并替换第二个斜杠。然后它将替换下划线。
关于java - 如何在java String中用 "\_"精确替换空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33536710/