【问题标题】:How to replace a space exactly by "\_" in java String?java - 如何在java String中用“\_”完全替换空格?
【发布时间】:2016-02-05 19:47:09
【问题描述】:

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

String example = "Bill Gates";
example = example.replaceAll(" ","\\_");    

示例的结果是:“Bill_Gates”而不是“Bill\_Gates”。当我尝试这样做时

String example = "Bill Gates";
example = example.replaceAll(" ","\\\\_");

示例的结果是:“Bill\\_Gates”而不是“Bill\_Gates”

【问题讨论】:

  • 使用替换,example.replace(" ","\\_");
  • @Leo 你想要一个反斜杠吗?
  • @AvinashRaj 是的,我只想要一个带下划线的反斜杠
  • 那么一个简单的替换就足够了。试试我的代码..

标签: java string replace replaceall


【解决方案1】:

试试:

String example = "Bill Gates";
example = example.replaceAll(" ","\\\\_");   
System.out.println(example);

【讨论】:

  • 是的,这是正确的,我做对了,但我认为它错了。谢谢
【解决方案2】:
public static void main(String[] args) {
        String example = "Bill Gates";
        example = example.replaceAll(" ", "\\\\_");
        System.out.println(example);
    }

输出

Bill\_Gates

【讨论】:

  • 感谢 Ankur,我进行了调试,所以我看不到它是如何呈现的。在实时调试中,我看到了 2 个反斜杠,所以我认为它不正确
  • 对不起,我想投票,但我的声誉还不够 :( 现在只有 10 个,我需要 15 个才能投票给你们
【解决方案3】:

您需要使用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++;

当它找到一个斜杠时,它将替换该斜杠的下一个字符。所以你必须输入“\\\\_”来替换方法。然后它将被处理为“\\_”。方法将查看第一个斜杠并替换第二个斜杠。然后它将替换下划线。

【讨论】:

  • 感谢您的详细解释。我想投票给你,但我的名声还不够
猜你喜欢
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 1970-01-01
  • 2018-11-06
相关资源
最近更新 更多