2013-10-08 22 views
-2

我想刪除從一個字符串中的字符:刪除特殊字符作爲模式的Java

+ - ! () { } [ ]^~ : \ 

我也想將其刪除:

/* 
*/ 
&& 
|| 

我的意思是,我不會刪除&|如果第二個字符跟在第一個字符後面,我將刪除它們(/* */ && ||

如何在Java中高效快速地執行此操作?

例子:

a:b+c1|x||c*(?) 

將是:

abc1|xc*? 
+1

最好的建議?嘗試一下,看看有什麼作用。不要擔心效率或速度。這不可能有任何區別;只有當它發生時才擔心。 – duffymo

+0

你嘗試了什麼? – ppeterka

+0

你嘗試了什麼?你應該看看'String#replaceAll()'。 –

回答

1

這可以通過長時間來完成,但實際上very simple regex

String aString = "a:b+c1|x||c*(?)"; 
String sanitizedString = aString.replaceAll("[+\\-!(){}\\[\\]^~:\\\\]|/\\*|\\*/|&&|\\|\\|", ""); 
System.out.println(sanitizedString); 
0

Thomas上寫道How to remove special characters from a string?

這取決於你定義爲特殊字符,但儘量 的replaceAll(...):

String result = yourString.replaceAll("[-+.^:,]",""); 

注意,^字符不能這是列表中的第一個,因爲 你要麼必須逃避它,要麼意味着「除了這些 個字符」。

另一個注意: - 字符需要是 列表中的第一個或最後一個,否則你必須轉義它或定義一個範圍( 例如: - ,意思是「所有字符在範圍:於)

所以,爲了保持一致性,而不是依賴於性格 定位,你可能想逃避所有那些正則表達式中有一個 特殊含義的字符(下面的列表是不 完成,因此請注意其他字符(如{,$等):

String result = yourString.replaceAll("[\\-\\+\\.\\^:,]",""); 

如果你想擺脫所有的標點和符號,試試這個正則表達式: \ p {P} \ p {S}(請記住,在Java字符串中,你必須轉義 反斜槓:「\ p {p} \ p {S}「)。

第三種方法可以是這樣的,如果你能確切地定義 我應該在你的字符串中左起:

String result = yourString.replaceAll("[^\\w\\s]",""); 

這裏的限制較少的替代品「定義允許的字符」 的方法,因爲建議雷:

String result = yourString.replaceAll("[^\\p{L}\\p{Z}]",""); 

正則表達式匹配的一切,這是不以任何語言文字和 不是一個分隔符(空格,換行符等)。請注意,您不能使用 [\ P {L} \ P {Z}](大寫P表示不具有該屬性),因爲該 意味着「所有不是字母或非空白的」,其中 幾乎匹配所有內容,因爲字母不是空格,並且是相反的。

0

在兩個辦法做到這一點:

1)

ArrayList<String> arrayList = new ArrayList<String>(); 
    arrayList.add("+"); 
    arrayList.add("-"); 
    arrayList.add("||"); 
    arrayList.add("&&"); 
    arrayList.add("("); 
    arrayList.add(")"); 
    arrayList.add("{"); 
    arrayList.add("}"); 
    arrayList.add("["); 
    arrayList.add("]"); 
    arrayList.add("~"); 
    arrayList.add("^"); 
    arrayList.add(":"); 
    arrayList.add("/"); 
    arrayList.add("/*"); 
    arrayList.add("*/"); 
    String string = "a:b+c1|x||c*(?)"; 
    for (int i = 0; i < arrayList.size(); i++) { 
     if (string.contains(arrayList.get(i))); 
      string=string.replace(arrayList.get(i), ""); 
    } 
    System.out.println(string); 

2)

String string = "a:b+c1|x||c*(?)"; 
    string = string.replaceAll("[+\\-!(){}\\[\\]^~:\\\\]|/\\*|\\*/|&&|\\|\\|", ""); 
    System.out.println(string);