Wyrażenia regularne a polskie znaki

Odpowiedz Nowy wątek
2012-09-06 10:46
new_bie
0
Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m;
m = p.matcher(_className);
if((m.find() == false)
{
    System.out.println("Jestem liczbą albo literą!");
}
else
{
    System.out.println("Nie jestem liczbą ani literą!");
}

Kod powyżej nie zadziała jeśli w _className będą polskie znaki.

Jakieś sugestie jak to elegancko rozwiązać?

Pozostało 580 znaków

2012-09-06 11:35
1

Wydaje mi się, że w Javie musisz się bawić z \p, co odpowiada za kategorie unikodu. Powinno działać coś takiego "[^\p{L}\d ]".

Pozostało 580 znaków

2012-09-06 12:15
1
Pattern.matches("[\\p{javaLowerCase}|\\p{javaUpperCase}|\\d]*", _className);

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 2x, ostatnio: bogdans, 2012-09-06 12:28

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0