2014-10-20 68 views
0

這只是字符串替換謎語,但它已經離開我的手。斜槓引號在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.** 

請建議我如何能代替我的「toBeReplacedWith」 沒有目標字符串「toBeReplacedIn」丟失任何斜槓。

+2

你知道你爲什麼添加這些斜線和他們的意思吧?順便說一句,你應該嘗試打印'toBeReplacedWith',看它是否打印斜線。 – TheLostMind 2014-10-20 10:22:55

+0

使用replace('\\ |','。') – 2014-10-20 10:24:35

+0

是的,我知道。 :)在實際的場景中,toBeReplacedWith來自數據庫內部的斜槓。並且我展示了替換活動,我希望它可以保留這些斜槓而不是省略。他們是數據的一部分,而且我沒有按照我在提出這個問題時所做的那樣進行打字工作。上述代碼中的每個值都是動態變化的,斜槓是{「」}等數據的一部分。現在我將不得不用其他字符串替換它。 – Tango 2014-10-20 10:57:24

回答

1

String.replaceAll方法的行爲與javadoc所說的行爲完全相同。

「需要注意的是反斜槓(\)和美元符號($)替換字符串中的可能導致的結果是不同的比如果它被視爲文字替換字符串;見Matcher.replaceAll使用Matcher.quoteReplacement(java.lang.String)打壓如果需要,這些字符的特殊含義。「

引用的文本(上面)甚至解釋瞭如何解決您的問題。

+0

原始字符串中沒有反斜槓... – assylias 2014-10-20 10:41:03

+0

是的,我知道..在實際的場景中,toBeReplacedWith來自數據庫內部的斜槓。並且我展示了替換活動,我希望它可以保留這些斜槓而不是省略。他們是數據的一部分,而且我沒有按照我在提出這個問題時所做的那樣進行打字工作。 – Tango 2014-10-20 10:57:59

+0

@assylias - 但是'toBeReplacedWith'中有反斜槓......而那些正在消失! – 2014-10-20 10:58:45

0

我試過這個給你,它的工作原理。以下是您必須執行的更改:

  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); 
+0

謝謝.. :)。在實際的場景中,所有的變量都來自數據庫。 toBeReplacedWith正在與它內部的斜線。並且我展示了替換活動,我希望它可以保留這些斜槓而不是省略。他們是數據的一部分,而且我沒有按照我在提出這個問題時所做的那樣進行打字工作。 – Tango 2014-10-20 11:09:30