2015-12-31 152 views
-1

我正在開發一個簡短的程序來分析文本,但我必須從Arraylist中刪除所有特殊字母,其中包含所有使用的字母。Java - 如何從Arraylist中刪除陣列的所有元素

我該怎麼做? 我三:

String[] SpezialLetters = {"1"," ","2","3","4","5","6","7","8","9","0","^","°","!","§","$","%","&","/","{","(","[",")","]","=","}","?","´","`","+","*","~","#","'","<",">","|","@","€",",",";",".",":","-","_"}; 
List<String> Letters = new ArrayList<String>(Arrays.asList(textToAnalyse.split(""))); 

    for(String Letter : Letters){ 
     if (Arrays.asList(SpezialLetters) != null && Arrays.asList(SpezialLetters).contains(Letter)){ 
      Letters.remove(Letter); 
     } 
    } 

回答

1

letters.removeAll(Arrays.asList(spezialLetters));應該這樣做。

0

試試這個:

for (int i = 0; i < letters.size(); i++) { 
    if (letters.get(i).replaceAll("[^a-zA-Z0-9]+","").equals("")){ 
     letters.remove(i); 
    } 
} 
0

而是在textToAnalyse創文的List一個字符Strings的。不會是以下片段更好的解決方案?

String toRemove = "[ \\d\\^°!§$%&/{}()\\[\\]=\\?´`\\+\\*~#'<>\\|@€,;\\.:\\-_]"; 
String textToAnalyse = "some f00 un _-:.;,€@|><'#~*+`´?}=])[({/&%$§!°^0987654321 "; 
String cleaned = textToAnalyse.replaceAll(toRemove, ""); 
System.out.printf("toRemove  : [%s]%n", toRemove); 
System.out.printf("textToAnalyse: [%s]%n", textToAnalyse); 
System.out.printf("cleaned  : [%s]%n", cleaned); 

輸出

toRemove  : [ \d\^°!§$%&/{}()\[\]=\?´`\+\*~#'<>\|@€,;\.:\-_] 
textToAnalyse: [some f00 un _-:.;,€@|><'#~*+`´?}=])[({/&%$§!°^0987654321 ] 
cleaned  : [somefun] 

toRemove模式的含義:

  • \d - 匹配所有數字
  • ^[]?+*|.- - 這些字符在正則表達式pattern特殊的意義爲此e必須逃脫
  • all others - 匹配文字字符