这只是字符串替换的谜语,但它已经不在了我的手中。
String dataToBeReplaced = "#putReplacement|Expression#";
String toBeReplacedWith = "<a href=\"google.com\" link=\"The link\"></a>";
String toBeReplacedIn = "{Content:"#putReplacement|Expression#"}";
// What I am doing is
toBeReplacedIn.replaceAll(dataToBeReplaced.replace('|','.'),toBeReplacedWith);
//What I am getting in 'toBeReplacedIn'
//{Content:"<a href="google.com" link="The link"></a>"}
**//In above output, see slashes are removed, this removal actually resulting in a string which is wrong Jason.**
请建议我如何替换我的&#39;到被替换的&#39; 不会丢失目标字符串中的任何斜杠&#39; toBeReplacedIn&#39;。
答案 0 :(得分:1)
String.replaceAll
方法的行为与javadoc所说的应该完全相同。
&#34;请注意,替换字符串中的反斜杠(
\
)和美元符号($
)可能会导致结果与将其视为文字替换字符串时的结果不同;见Matcher.replaceAll
。如果需要,使用Matcher.quoteReplacement(java.lang.String)
来抑制这些字符的特殊含义。&#34;
引用的文字(上图)甚至解释了如何解决问题。
答案 1 :(得分:0)
我为你试过这个,它有效。以下是您必须执行的更改:
\\\
用于反斜杠文字。Matcher.quoteReplacement
来处理\
没有特殊含义。 见下面的代码:
String dataToBeReplaced = "#putReplacement|Expression#";
String toBeReplacedWith = "<a href=\\\"google.com\\\" link=\\\"The link\\\"></a>";
String toBeReplacedIn = "{Content:\"#putReplacement|Expression#\"}";
String x = toBeReplacedIn.replaceAll(dataToBeReplaced.replace('|','.'), Matcher.quoteReplacement(toBeReplacedWith));
System.out.println(x);