Использование:
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
Сколько с начала и с конца? –
отправьте пример пожалуйста –
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/base/CharMatcher.html#trimFrom(java.lang.CharSequence) –