gpt4 book ai didi

java - String.replaceFirst 不适用于带有 $ 符号的参数

转载 作者:行者123 更新时间:2023-12-01 17:52:37 26 4
gpt4 key购买 nike

我尝试在执行restTemplate.exchange 之前替换网址中的参数,如下所示。

String userKey = "$$maryann$$";
String resourceURL =
"http://api.qal1.net/v3/fis/1234/getCustomer/{value}"

resourceURL = resourceURL.replaceFirst("\\{" + "value" + "\\}", userKey);

抛出以下错误,

java.lang.IllegalArgumentException: Illegal group reference
at java.util.regex.Matcher.appendReplacement(Matcher.java:857)
at java.util.regex.Matcher.replaceFirst(Matcher.java:1004)
at java.lang.String.replaceFirst(String.java:2178)

我想要结果字符串为

http://api.qal1.net/v3/fis/1234/getCustomer/$$maryann$$

您能帮忙吗?

最佳答案

replaceFirst 使用正则表达式 (regex) 语法,其中 $ 是特殊符号:

  • 在您想要匹配的内容(目标)的描述中,它表示字符串结尾,
  • 在替换部分中,它可用于访问第 n 个组中的匹配项,例如 $n

所以你需要逃避它。您可以通过 \$ 手动执行此操作(在字符串文字中需要看起来像 "\\$" 因为 \ 在那里也很特殊) ,或者您可以使用可以为您转义的方法,例如

str = str.replaceFirst(Pattern.quote(yourTarget), Matcher.quoteReplacement(yourReplacement);

关于java - String.replaceFirst 不适用于带有 $ 符号的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279707/

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