这只是字符串替换之谜,但它已经超出了我的控制范围。
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.**
请建议我如何在不丢失目标字符串"toBeReplacedIn"中任何斜杠的情况下替换我的"toBeRemovedWith"。
String.replaceAll
方法的行为与javadoc所说的完全一样。
请注意,替换字符串中的反斜杠(
)和美元符号(
$
)可能会导致结果与将其视为文字替换字符串时不同;请参阅Matcher.replaceAll
。如果需要,可以使用Matcher.quoteReplacement(java.lang.String)
来抑制这些字符的特殊含义。
上面引用的文字甚至解释了如何解决你的问题。
我为您尝试过,它很有效。以下是您必须做的更改:
- 对反斜杠文字使用
\
- 用
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);