2014-07-26 4 views
3

Я знаю, как заменить ВСЕ не буквенно-цифровые символы в строке, но как это сделать только с начала и конца строки?Java удаляет все не буквенно-цифровые символы от начала и до конца строки

Мне нужна эта строка:

"theString,"

быть:

theString

заменить ВСЕ NON алфавитно-цифровых символов в строке:

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

Сколько с начала и с конца? –

+0

отправьте пример пожалуйста –

+0

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/CharMatcher.html#trimFrom(java.lang.CharSequence) –

ответ

8

Использование ^ (соответствует началу строки) и $ (соответствует в конце) анкеров:

s = s.replaceAll("^[^a-zA-Z0-9\\s]+|[^a-zA-Z0-9\\s]+$", ""); 
+0

Я дам ему a go ... – Mike6679

+0

Что там '\\ s'? Я знаю, что у ОП это было, но тогда это было неправильно, и теперь это неправильно. –

+0

@DavidConrad, '\\ s' будет соответствовать любому символу пробела. Я думал, что это намерение OP исключить буквенно-цифровые символы и символы пробела, поэтому я не коснулся его. – falsetru

-1

s = s.replaceAll ("[^ а-Za-z0-9]", "");

+0

Это удаляет все символы, отличные от алфавита –

0
yourString=yourString.replaceAll("^\\W+|\\W+$",""); 
1

Использование:

s.replaceAll("^[^\\p{L}^\\p{N}\\s%]+|[^\\p{L}^\\p{N}\\s%]+$", "") 

Вместо:

s.replaceAll("^[^a-zA-Z0-9\\s]+|[^a-zA-Z0-9\\s]+$", "") 

Где p{L} это любой вид письма с любого языка.
И p{N} - это любой цифровой символ в любом скрипте.
Для использования в латинских сценариях, когда необходимы неанглоязычные языки, например, испанский, например: éstas, apuntó; будет в последнем стать; Стас и Аптун. Первый также работает на языках, отличных от латинского.
Для всех индоевропейских языков, добавить p{Mn} для арабского и иврита гласные:

s.replaceAll("^[^\\p{L}^\\p{N}^\\p{Mn}\\s%]+|[^\\p{L}^\\p{N}^\\p{Mn}\\s%]+$", "") 

Для дравидских языков, гласные могут окружать согласного - в отличие от семитских языков, где они находятся «внутри» характер - как ಾ. Вместо этого используется p{Me}. Для всех языков используют:

s.replaceAll("^[^\\p{L}^\\p{N}^\\p{M}\\s%]+|[^\\p{L}^\\p{N}^\\p{M}\\s%]+$", "") 

См regex tutorial for a list of Unicode categories