在String.replace之后,斜杠引号将消失



这只是字符串替换之谜,但它已经超出了我的控制范围。

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)来抑制这些字符的特殊含义。

上面引用的文字甚至解释了如何解决你的问题。

我为您尝试过,它很有效。以下是您必须做的更改:

  1. 对反斜杠文字使用\
  2. 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);

最新更新