2010-11-30 2 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; 
} 

Я совершенно новой для регулярных выражений, но были тралового учебники и был бы признателен за любые идеи.

Спасибо!

Frank

ответ

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

Смежные вопросы