Как удалить все специальные символы из строки, кроме -.и пространство - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть строка, в которой я хочу удалить все специальные символы, кроме дефиса, точки и пробела.

Я использую filename.replaceAll("[^a-zA-Z0-9.-]","").Он работает для . и -, но не для пробела.

Что я должен добавить к этому, чтобы он работал и для космоса?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Вы можете использовать это регулярное выражение [^a-zA-Z0-9\s.-] или [^a-zA-Z0-9 .-]

\s соответствует пробелу, а (символ пробела) соответствует только пробелу.

Так что в этом случае, если выдля сопоставления пробелов используйте это:

filename.replaceAll("[^a-zA-Z0-9\\s.-]", "");

И если вы хотите сопоставить только пробелы, используйте это:

filename.replaceAll("[^a-zA-Z0-9 .-]", "");
0 голосов
/ 05 декабря 2018

Используйте либо \s, либо просто пробел , как описано в Pattern классе javadoc

\s - A whitespace character: [ \t\n\x0B\f\r]
   - Literal space character

Вы должны либо экранировать - символ как \-, поэтому он не будет интерпретироваться как выражение диапазона или не будет оставаться последним символом регулярного выражения.Собираем все вместе:

filename.replaceAll("[^a-zA-Z0-9\\s.-]", "")
filename.replaceAll("[^a-zA-Z0-9 .-]", "")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...