2014-01-23 40 views
-2

我試圖剝離出一定的「<」和「>」從正在由第三方產生的(白癡)HTML代碼

我做一個的replaceAll爲一定的留下了我們的ETL人員沒有收到的條件。

I have this string: "<$200" and I need it to be XML compliant like "&lt;$200" 

string.replaceAll("<$200","&lt;$200"); 

不起作用。我認爲這是一些regEx質樸。什麼是正確的方法來做到這一點?

+3

'$'是在正則表達式表示字符串的結尾元字符;逃避它。 – devnull

+0

「$」在正則表達式中有一個特殊的含義...它不是一個正常的字符..使用\\反斜槓來逃避它的特殊含義並正常解析它。 – TheLostMind

回答

5

String#replaceAll接受正則表達式作爲參數,而不是字符串。 $是一個special character不會被引用爲字符串。解決方案:

  • 使用String#replace代替 - 它接受一個字符串,而不是一個正則表達式:

    string.replace("<$200","&lt;$200");

  • 使用Pattern#quote - 它返回一個字符串表示:

    string.replaceAll(Pattern.quote("<$200"),"&lt;$200");

  • Escape special characters作者addi ng \\之前的特殊字符。

+1

+1爲詳細信息:) – TheLostMind

+0

謝謝! String.replace工作得很好。 – mmaceachran

+0

@mmaceachran這確實可以在這裏使用,但我建議你確保你明白爲什麼其他的替代方案也適用。 – Maroun

1

使用此

String demo ="<$200"; 
demo = demo.replaceAll("<","&lt;"); 
System.out.println(demo);