2014-09-11 103 views
0

我想從字符串中刪除所有特殊字符,我嘗試了很多在stackoverflow中給出的選項,但它們都不適用於我。如何從java中的字符串中刪除所有特殊字符?

這裏是我的代碼:

public class convert { 

    public static void main(String[] args) { 
     try {  
      List<List<String>> outerList = new ArrayList<List<String>>(); 
      outerList.add(new ArrayList<String>(asList("11-","2"))); 
      outerList.add(new ArrayList<String>(asList("(2^","1"))); 
      outerList.add(new ArrayList<String>(asList("11","3)")));  

      int i,j; 
      for(i=0;i<outerList.size();i++){  
        for(j=0;j<outerList.get(0).size();j++){  
          outerList.get(i).get(j).replaceAll("[^\\w\\s]", ""); 
          if(outerList.get(i).get(j).matches("-?\\d+"){ 
           continue; 
          }else{ 
           System.out.println("special characters not removed"); 
           System.exit(0); 
          } 
        } 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+3

什麼特殊字符?不是字母數字的?命令?在範圍[32..255] - ASCII螺母不是命令? – 2014-09-11 10:03:05

回答

3

的(簡單的)錯誤是, s.replaceAll(...)不更改s但生成新的更改的字符串:

String s = outerList.get(i).get(j).replaceAll("[^\\w\\s]", ""); 
outerList.get(i).set(j, s); 
+0

它的工作原理....... – 2014-09-11 10:26:03

0

中的非字母數字字符的情況下,你可以使用

String value = "[email protected]() world"; 
value = value.replaceAll("[^A-Za-z0-9]", ""); 
System.out.println(value) // => helloworld 

類似的東西已經被問here

+0

我用過這個,但沒有工作 – 2014-09-11 10:08:10

+0

請注意,您可以使用'\ p {Alnum}'而不是'A-Za-z0-9'。 – 2014-09-11 10:08:25

+0

@AnoopDobhal不要忘記'String'是不可變的,所以你必須把值賦給'String':'value = value.replaceAll(...)' – 2014-09-11 10:10:05

相關問題