java заменяет только регулярное выражение a-z0-9 - PullRequest
4 голосов
/ 11 октября 2010

Я хотел бы показать только a-z0-9 в строке, а другие символы должны быть заменены пустой строкой

String s=this.saveFileName.replaceAll("/[a-z0-9. ]/", "");

Это не работает, есть идеи, почему?

Ответы [ 4 ]

14 голосов
/ 11 октября 2010

Попробуйте это:

String s = "abc123ABC!@#$%^;'xyz";
String newString = s.replaceAll("[^a-z0-9]", "");
//newString is now "abc123xyz"

В этом случае используется оператор отрицания (^) в классах символов, который в основном говорит: «соответствует всем, кроме следующих символов.»

Кроме того, выне нужно использовать косую черту при определении регулярных выражений Java.

2 голосов
/ 11 октября 2010

Вам не нужны эти / /.

Некоторые языки, такие как PHP, ожидают, что вы поместите регулярное выражение между парой разделителей, а Java - нет.

Поскольку вы хотите заменить все, кроме a-z0-9, вам нужно регулярное выражение [^a-z0-9] или, альтернативно, [^a-z\\d]

A [..] - это класс символов, соответствующий указанному в нем символу. Класс char также может содержать диапазоны, например [a-z], которые соответствуют одной строчной букве. Теперь ^ в начале класса char отрицает его, поэтому [^a-z] соответствует любому символу , кроме строчной буквы.

1 голос
/ 11 октября 2010

Вы пробовали без отметок //?

String s=this.saveFileName.replaceAll("[^a-z0-9]", "");
0 голосов
/ 11 октября 2010

Это регулярное выражение, кажется, делает трюк:

String s="Testing-1.2.3_$".replaceAll("[^a-z0-9. ]", "");

вывод:

esting1.2.3

символ ^ отменяет набор, и косые черты не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...