Dlaczego poniższy kod nie działa (powoduje fałsz) w językach indyjskich?Kod Java REGEX do sprawdzenia, czy znaki indyjskie nie działają?
System.out.println(Charset.forName("UTF-8").encode("అనువాద")
.asCharBuffer().toString().matches("\\p{L}+"));
System.out.println(Charset.forName("UTF-8").encode("स्वागत")
.asCharBuffer().toString().matches("\\p{L}+"));
System.out.println(Charset.forName("UTF-8").encode("நல்வரவு")
.asCharBuffer().toString().matches("\\p{L}+"));
Powyższy kod zwraca wartość false. Jaki jest problem z tym wyrażeniem regularnym? Jak zweryfikować jakąkolwiek postać unicode na świecie?
Powinieneś wykonać '" అనువాద ". Matches (" \\ p {L} + ")'. Ponadto upewnij się, że zarówno edytor, jak i kompilator używają tego samego zestawu znaków (najlepiej UTF-8). –
Cześć Joop, upewniłem się, że kompilator i edytor używają UTF-8. Ale nadal "అనువాద". Mecze ("\\ p {L} +") wyniki są fałszywe. – suren
Użyj '" (\\ p {L} | \\ p {M}) + "' lub lepiej @stema '" [\\ pL \\ pM] + "', również zliczając znaki diakrytyczne jako prawidłowe. –