Вопрос

Как я могу определить, содержит ли 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.* пакетов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top