无法在具有String.replaceFirst()或String.replaceAll()的替换字符串中使用反斜杠

时间:2019-01-22 16:23:17

标签: java

我正在尝试用反斜杠替换字符串的一部分。

我可以使用BorderStyle = Dotted; ; ; ; Solid 方法执行此操作,但是尝试使用.replace().replaceAll()进行此操作会导致错误。

这是我正在使用的代码,已将其推送到replit

.replaceFirst()

这是有错误的输出:

class Main {
  public static void main(String[] args) {
    String a = "hello world";
    a = a.replaceFirst("h", "H");
    System.out.println(a);
    System.out.println(a.replace("o", "\\"));
    System.out.println(a.replaceAll("w", "\\"));
    System.out.println(a.replaceFirst("e", "\\"));
  }
}

3 个答案:

答案 0 :(得分:1)

replaceAll进行正则表达式匹配和基于正则表达式的替换。

正则表达式替换字符串可以包含对搜索正则表达式的引用,形式为\0(如果编码为字符串,则为\\0

您的程序出现错误,因为它期望在\后面加上数字,但是数字丢失。使用\\(或在您的情况下使用\\\\,因为在您的情况下您将其编码为字符串)

答案 1 :(得分:0)

如果使用"\\"会发生什么:第一个\将逃脱第二个。然后,您好的h将被\替换。您的字符串现在值"\ello"。并且,当您打印此字符串时,将\进行解释并转义e(由于e不是特殊字符,因此无济于事),因此您获得了ello。 / p>

当您使用"\\\\"时:第一个\占据第二个,而第三个逃逸出第四个。然后将h替换为\\。您的字符串现在值"\\ello"。并且当您打印此图形时,第一个\会跳过第二个,因此您得到\ello

答案 2 :(得分:-1)

只写System.out.println(a.replace(“ o”,“ \\\”))而不是System.out.println(a.replace(“ o”,“ \\”)));

玩得开心。