Это зависит от того, что вы определяете как специальные символы, но попробуйте replaceAll(...)
:
String result = yourString.replaceAll("[-+.^:,]","");
Обратите внимание, что символ ^
не должен быть первым в списке, так как вы бы потомлибо нужно убежать от него, либо это будет означать «любой, кроме этих символов».
Еще одно примечание: символ -
должен быть первым или последним в списке, в противном случае вам придется его избегатьили он будет определять диапазон (например, :-,
будет означать «все символы в диапазоне от :
до ,
).
Таким образом, чтобы сохранить согласованность и не зависеть от расположения символов, вы можетехотите экранировать все те символы, которые имеют особое значение в регулярных выражениях (следующий список неполон, поэтому помните о других символах, таких как (
, {
, $
и т. д.):
String result = yourString.replaceAll("[\\-\\+\\.\\^:,]","");
Если вы хотите избавиться от всех знаков препинания и символов, попробуйте следующее регулярное выражение: \p{P}\p{S}
(имейте в виду, что в строках Java вам придется избегать обратной косой черты: "\\p{P}\\p{S}"
).
Третий способ может быть что-то вроде этогоs, если вы можете точно определить, что должно остаться в вашей строке:
String result = yourString.replaceAll("[^\\w\\s]","");
Это означает: заменить все, что не является символом слова (az в любом случае, 0-9 или _) или пробелом.
Редактировать: обратите внимание, что есть несколько других шаблонов, которые могут оказаться полезными.Однако я не могу объяснить их все, поэтому взгляните на справочный раздел регулярные-выражения.info .
Вот менее ограничительная альтернатива подходу «определения разрешенных символов»,как подсказал Рэй:
String result = yourString.replaceAll("[^\\p{L}\\p{Z}]","");
Регулярное выражение соответствует всему, что не является буквой на любом языке и не является разделителем (пробел, разрыв строки и т. д.).Обратите внимание, что вы не можете использовать [\P{L}\P{Z}]
(верхний регистр P означает отсутствие этого свойства), поскольку это будет означать «все, что не является буквой или не является пробелом», что почти соответствует всему, поскольку буквы не являются пробелами и наоборот.
Дополнительная информация о Unicode
Некоторые символы Unicode, кажется, вызывают проблемы из-за различных возможных способов их кодирования (в виде одной кодовой точки или комбинации кодовых точек).).Пожалуйста, обратитесь к регулярные-выражения.info для получения дополнительной информации.