gpt4 book ai didi

Java replaceAll : Cannot replace string with backslash

转载 作者:行者123 更新时间:2023-11-29 10:09:01 24 4
gpt4 key购买 nike

在我的 Java 程序中,我试图替换字符串中包含反斜杠的子字符串(paloalto\sanjose\)。但是,即使我使用双反斜杠来减轻反斜杠作为转义字符的影响,我仍然会收到以下错误:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 9
paloalto\
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at Main.main(Main.java:8)

下面是我的代码:

String original = "paloalto\\adam paloalto\\jack paloalto\\justin";
System.out.println("original = " + original);

String sanjose = original.replaceAll("paloalto\\", "sanjose\\");
System.out.println("backgammon = " + sanjose);

最佳答案

replace 将为您工作,replaceAll 使用正则表达式,\\ 是特殊字符的前缀,例如 \\s 是空格,\\. 是任何字符,等等。

String test = "paloalto\\paloalto\\";
test = test.replace("paloalto\\", "sanhose\\");
System.out.println(test);

对于 replaceAll,您可以使用 Pattern.quote 的结果作为第一个参数,使用 Matcher.quoteReplacement 的结果作为第二个参数:

test = test.replaceAll(Pattern.quote("paloalto\\"), Matcher.quoteReplacement("sanjose\\"));

Documentation.

关于Java replaceAll : Cannot replace string with backslash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51508416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com