java - 如何在java String中用 "\_"精确替换空格?

标签 java string replace replaceall

我有一个带空格的字符串,我希望用 "\_" 替换该空格 .例如这里是我的代码

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/

相关文章:

mysql - mysql 中有一个类似 php 中的 str_replace 的函数吗?

java - MainActivity 上的 android.view.InflateException 错误

java - 纪念品模式的缺点

c# - 如何将包含编号列表的字符串拆分为多个字符串?

python - 使用 pandas 修改捕获组

用于匹配 CSS 注释开头和结尾的 Javascript 正则表达式

java - Azure SDK 中的哪个 Java API 可删除 NetworkSecurityRule?

java - 表头未显示在 Java Swing 上

c# - String.Join 非字符串数组的最佳方法是什么?

python - 将字符串格式化为 Python 中的特定字符限制