Java String.replaceFirst不适用于带有$symbol的参数

Java String.replaceFirst不适用于带有$symbol的参数,java,string,Java,String,在执行restTemplate.exchange之前,我正在尝试替换url中的参数,如下所示 String userKey = "$$maryann$$"; String resourceURL = "http://api.qal1.net/v3/fis/1234/getCustomer/{value}" resourceURL = resourceURL.replaceFirst("\\{" + "value" + "\\

在执行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$$

请您帮忙好吗?

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

  • 在描述要匹配的内容(目标)时,它表示字符串的结尾
  • 在替换零件中,它可用于从第n组访问匹配项,如
    $n
所以你需要逃避它。您可以通过
\$
手动执行此操作(在字符串文字中,它需要看起来像
“\\$”
,因为
\
在这里也很特殊),或者您可以使用可以根据需要对其进行转义的方法

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

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

  • 在描述要匹配的内容(目标)时,它表示字符串的结尾
  • 在替换零件中,它可用于从第n组访问匹配项,如
    $n
所以你需要逃避它。您可以通过
\$
手动执行此操作(在字符串文字中,它需要看起来像
“\\$”
,因为
\
在这里也很特殊),或者您可以使用可以根据需要对其进行转义的方法

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

问题在于
replaceFirst()
对正则表达式进行操作,并且替换允许以
$groupnumber
的形式进行组引用。尝试避开美元:
resourceURL.replaceFirst(…,Matcher.quoteReplacement(userKey))
问题在于
replaceFirst()
对正则表达式进行操作,并且替换允许以
$groupnumber
的形式进行组引用。尝试避开美元:
resourceURL.replaceFirst(…,Matcher.quoteReplacement(userKey))上述方法的结果为,{GUID}。我无法从$$maryann$$中转义$,因为它是最终用户的用户ID,与我应该传递给API的内容完全相同。它对我来说很好:谢谢!我没有将结果字符串赋回变量。“现在很好用了。@bharath,不客气。顺便说一句,我注意到你没有将任何答案标记为你问题的解决方案(我重复:“问题”不是必要的“你面临的问题”,因为这在提问中并不总是正确显示)。您是否了解“接受答案”机制?若并没有,那个么您可以在上阅读更多关于它的信息。上述方法的结果是,{GUID}。我无法从$$maryann$$中转义$,因为它是最终用户的用户ID,与我应该传递给API的内容完全相同。它对我来说很好:谢谢!我没有将结果字符串赋回变量。“现在很好用了。@bharath,不客气。顺便说一句,我注意到你没有将任何答案标记为你问题的解决方案(我重复:“问题”不是必要的“你面临的问题”,因为这在提问中并不总是正确显示)。您是否了解“接受答案”机制?如果没有,那么你可以阅读更多关于它的网站。