我正在尝试在执行restTemplate.exchange之前从url替换参数,如下所示。
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$$
你能帮忙吗?
答案 0 :(得分:3)
replaceFirst
使用正则表达式(regex)语法,其中$
是特殊符号:
$n
。 所以你需要逃避它。您可以通过\$
手动执行此操作(在字符串文字中需要看起来像"\\$"
,因为\
在那里也很特殊),或者您可以使用可以为您逃脱它的方法< / p>
str = str.replaceFirst(Pattern.quote(yourTarget), Matcher.quoteReplacement(yourReplacement);