Алфавиты Java на разных языках
-
03-07-2019 - |
Вопрос
Как я могу определить, содержит ли String только алфавиты, и я хочу иметь немного больше, чем [a-zA-Z]+, так есть ли какой-нибудь способ определить алфавиты по локали?
Решение
Тот Самый Character
класс имеет такие методы, как isLetter
который сможет определить, является ли символ буквой, как определено в спецификации API для метода.
Существует также другой подход к использованию Character.UnicodeBlock
класс, который способен возвращать, находится ли символ в определенном символьном блоке Юникод.
Например, мне нужно было определить, является ли символ полноразмерным катакана характер, и чтобы иметь возможность сделать это, я должен был использовать Character.UnicodeBlock.of
способ:
boolean isKatakana =
Character.UnicodeBlock.of(c) == Character.UnicodeBlock.KATAKANA;
Также, чтобы добавить, символ с определенным индексом String
может быть извлечен с помощью charAt(int)
метод, и кодовая точка Юникода может быть получена с помощью codePointAt(int)
способ.
Другие советы
Кроме того, взгляните на пакет com.ibm.icu.text.Например, этот фрагмент возвращает все буквы алфавита для определенного языка:
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();
Эта задача не может быть достигнута с помощью java.* пакетов.