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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top