alfabetos Java em diferentes idiomas
-
03-07-2019 - |
Pergunta
Como posso determinar se string contém apenas alfabetos e eu quero ter pouco mais do que [a-zA-Z] +, então existe alguma maneira para determinar alfabetos por Locale?
Solução
O Character
classe tem métodos tais como isLetter
que vai ser capaz de determinar se um personagem é uma carta, tal como definido na especificação API para o método.
Há também uma outra abordagem de usar a classe Character.UnicodeBlock
que é capaz de retornar se um personagem está em um bloco de carácter específico da Unicode .
Por exemplo, eu tinha que determinar se um personagem era uma largura full- katakana caráter , e ser capaz de fazer isso, eu tive que usar o Character.UnicodeBlock.of
método:
boolean isKatakana =
Character.UnicodeBlock.of(c) == Character.UnicodeBlock.KATAKANA;
Também para adicionar, o personagem em um determinado índice de um String
pode ser recuperada usando o charAt(int)
método, e o ponto de código Unicode pode ser recuperada pelo codePointAt(int)
método.
Outras dicas
Além disso vejam o pacote com.ibm.icu.text. Por exemplo, esse trecho retorna todas as letras do alfabeto para a língua definida:
ULocale ulocale = com.ibm.icu.util.ULocale
.forLocale(Locale.forLanguageTag(language));
UnicodeSet set = LocaleData.getExemplarSet(ulocale, LocaleData.ES_STANDARD);
Iterator<String> iterator = set.iterator();
StringBuffer buf = new StringBuffer();
while (iterator.hasNext()) {
buf.append(iterator.next());
}
return buf.toString();
Esta tarefa não pode ser alcançado por meio de java. * Pacotes.