2013-10-16 44 views
1

我的Java程序中有一個字符串,它從數據庫中讀取。刪除字符串中的特殊字符

這可能包含特殊字符如下之間:

Special Character

我想忽略從字符串中的所有這樣的特殊字符,使得最終的字符串應該只有字母數字字符(或如果可能的話,只有屬於特定編碼的字符,例如UTF-8等)。

firm->s將成爲輸出字符串中的行。

如何從輸入字符串中刪除除正常字母數字字符(或特定編碼)以外的所有特殊字符以輸出字符串?

<?xml version="1.0" encoding="UTF-8"?> 
<StartXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="abcXYZ.xsd"> 
<MyTag>Gebrüder Leipzig→s</MyTag> 
</StartXML> 

和錯誤是:

Extra content at the end of the document Leipzig 
+0

其實→符號是正確的UTF-8符號 –

+0

@IlyaBursov:我不知道..但後來在處理中,我將這個字符串放在XML中,然後應用XMLLINT命令進行漂亮的打印。 XMLLINT在給這個解析器錯誤的特殊字符上失敗..任何解決方案? – Nik

+0

不能肯定地說,它是最新版本嗎?你使用什麼參數?編碼是否正確地在xml /命令行中指示? –

回答

10

您可以使用String#replaceAll

myStr = myStr.replaceAll("[^a-zA-Z0-9]+", "") 

^is saying:「記住,是不是在方括號內指定的範圍內的所有字符」。

+2

將0-9添加到正則表達式 –

+1

@IlyaBursov謝謝! – Maroun

+0

@MarounMaroun:在處理的後面,我將這個字符串放入XML中,然後應用XMLLINT命令進行漂亮的打印。 XMLLINT在給這個解析器錯誤的特殊字符上失敗..任何解決方案? – Nik

5

嘗試正則表達式,

String result= yourString.replaceAll("[^a-zA-Z0-9]+",""); 

,將給你result只有字母數字

如果只想字母

String resultWithAlphabetsOnly= yourString.replaceAll("[^a-zA-Z]+",""); 
+0

@Suresh Atta:我在後來的unix中使用XMLLINT命令..但是在這個字符上失敗了..你知道用XMLLINT處理這些特殊字符的解決方案嗎? – Nik

+0

@Vicky在執行完該行之後,就在執行該命令之前,所有特殊字符都將被清除。你可能仍然執行舊的字符串。執行'result'作爲命令 –

1

我會寫

theString.replaceAll("\\W",""); 

這將刪除除字母,數字和下劃線的一切。

+0

您能否在下面的問題中看到我的意見..這解釋了我面臨的實際問題..如果您可以請幫忙.. – Nik

相關問題