У меня есть строка с большим количеством специальных символов. Я хочу удалить все эти, но сохранить алфавитные символы.Как заменить специальные символы в строке?
Как я могу это сделать?
У меня есть строка с большим количеством специальных символов. Я хочу удалить все эти, но сохранить алфавитные символы.Как заменить специальные символы в строке?
Как я могу это сделать?
Это зависит от того, что вы имеете в виду. Если вы просто хотите, чтобы избавиться от них, сделать это:
(Update: Очевидно вы хотите сохранить цифры, а также, использовать вторую линию в этом случае)
String alphaOnly = input.replaceAll("[^a-zA-Z]+","");
String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
или эквивалент:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+","");
String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(Все это может быть значительно улучшена за счет прекомпиляции шаблон регулярных выражений и хранить его в постоянной)
Или, с Guava:
private static final CharMatcher ALNUM =
CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z'))
.or(CharMatcher.inRange('0', '9')).precomputed();
// ...
String alphaAndDigits = ALNUM.retainFrom(input);
Но если вы хотите, чтобы включить акцентированные символы в нечто разумное, что по-прежнему ASCII, посмотрите на эти вопросы:
Спасибо Floydit это работает fine.but одна проблемы есть – Tanu 2010-11-26 11:27:33
, когда я использую эту функцию он удаляет все числа, а также. Но я не хочу, чтобы номера удалялись. Просто нужно удалить специальные символы. Пожалуйста, предложите что-нибудь .. – Tanu 2010-11-26 11:28:42
хорошо, что вы сказали, что вам нужен только алфавит. Но я обновляю свой ответ через минуту – 2010-11-26 11:46:57
Вы можете используйте основные регулярные выражения для строк, чтобы найти все специальные символы или использовать шаблоны шаблонов и классов сопряжения для поиска/изменения/удаления определенных пользователем строк. Эта ссылка содержит несколько простых и понятных примеров для регулярных выражений: http://www.vogella.de/articles/JavaRegularExpressions/article.html
Я использую это.
s = s.replaceAll("\\W", "");
Он заменяет все специальные символы из строки.
Здесь
\ ш: слово символа, сокращенно [A-Za-Z_0-9]
\ W: A несловообразующего характер
Вы можете получить Юникод для этого барахла символ из инструмента charactermap в окне pc и добавьте \ u eg \ u00a9 для символа авторского права. Теперь вы можете использовать эту строку с этим конкретным junk caharacter, не удаляйте символ нежелательной почты, а заменяете соответствующим юникодом.
Вы можете использовать следующий способ для хранения буквенно-цифровых символов.
replaceAll("[^a-zA-Z0-9]", "");
И если вы хотите сохранить только буквенные символы используют этот
replaceAll("[^a-zA-Z]", "");
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
Здесь все специальные символы, кроме пространства, запятая, и амперсанд заменяются. Вы также можете опустить пробел, запятую и амперсанд следующим регулярным выражением.
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Где Ввод - это строка, которую мы должны заменить символами.
Посмотрите эту тему: http://stackoverflow.com/questions/3438854/replace-unicode-control-characters-existing-solution – 2010-11-26 07:44:30