2010-11-30 93 views
3

我正在循環使用數百個數據條目,其中大部分數據條目都符合我的規則,但在使用條目前必須先過濾一些特殊字符或不需要的空白。在Java中過濾不需要的字符串

我只想要=,字符以及數字和字母。沒有其他特殊字符。可以有單個空格,但只能在,之後分開數據。

我打電話的過濾方法的循環中:

private String filterText(String textToBeFiltered) { 
    String filteredText = null; 

    // Remove all chars apart from = and , with whitespace only allowed 
    // after the , 

    return filteredText; 
} 

我完全新的正則表達式,但已經被拖網教程和希望任何想法。

謝謝!

弗蘭克

回答

7

可以使用replaceAll方法爲:

input = input.replaceAll("[^=,\\da-zA-Z\\s]|(?<!,)\\s",""); 

Ideone Link

中使用的正則表達式是:[^=,\\da-zA-Z\\s]|(?<!,)\\s這意味着:

  • 取代比=其他任何字符, ,或任何數字或任何字母或 任何非空格"",實際上 將其刪除。
  • 也刪除任何空白,但只有 ,如果它不是由,
+0

@codadict之前:這並不是真實的數據。它在U + A0上失敗,這是一個很大的**文本數據 - 當然它超過了我處理的95%。您的模式在0x85和其他幾個常見的空白代碼點之間也失敗。另外假裝這些都是信件是一個天真的外觀,沒有人再相信。 Tschüβ! – tchrist 2010-11-30 15:34:21