繁体   English   中英

如何在java String中用“\ _”完全替换空格?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM