есть ли для этого в утилите обыкновенный метод? - PullRequest
1 голос
/ 27 июля 2011

Я искал некоторое время, но не мог найти

boolean isAlpha(final char character)
    {
        char c = Character.toUpperCase(character);
        switch (c)
        {
        case 'A':
        case 'B':
        case 'C':
        case 'D':
        case 'E':
        case 'F':
        case 'G':
        case 'H':
        case 'I':
        case 'J':
        case 'K':
        case 'L':
        case 'M':
        case 'N':
        case 'O':
        case 'P':
        case 'Q':
        case 'R':
        case 'S':
        case 'T':
        case 'U':
        case 'V':
        case 'W':
        case 'X':
        case 'Y':
        case 'Z':
            return true;
        default:
            return false;
        }
    }

Ответы [ 7 ]

5 голосов
/ 27 июля 2011

Commons Lang имеет CharUtils.isAsciiAlpha, но, возможно, вы могли бы просто использовать java.lang.Character.isLetter(char) ( javadoc ).Не совсем то же самое (последнее соответствует не только AZ ASCII), но может быть достаточно для ваших нужд.

4 голосов
/ 27 июля 2011

Я знаю, что это не из языка, но как насчет return (c >= 'A' && c <= 'Z')?

2 голосов
/ 27 июля 2011

Вы можете использовать StringUtils.isAlpha

Этот переключатель довольно многословен, если бы мне пришлось написать его самому, я бы сделал что-то вроде:

boolean isAlpha(final char c) {
    return "abcdefghijklmnopqrstuvwxyz".indexOf(Character.toLowerCase(c)) != -1;
}
2 голосов
/ 27 июля 2011

Вы хотите CharUtils.isAsciiAlpha .

  • Это должно быть быстрее, чем StringUtils.isAlpha(String), потому что вы не создаете новый объект String.
  • Вы избегаете затрат на преобразование в верхний регистр символов в вашем оригинальном методе.
  • Это более читабельно, чем проверки диапазона (как это реализовано).
  • java.lang.Character.isLetter(char) вернет true для определенных нелатинских символов, для которых ваш метод возвращает false.
1 голос
/ 27 июля 2011

Символьный класс предоставляет множество полезных API.Вам не нужно конвертировать персонажа.Несколько примеров:

Character.isLetter (символ ch)

Character.isLowerCase (символ ch)

Character.isUpperCase (символ ch)

СимволisDigit (char ch)

Character.isLetterOrDigit (char ch)

1 голос
/ 27 июля 2011

Если вы просто хотите проверить, находится ли данный символ где-то между A-Z, более простой способ сделать это - использовать регулярные выражения:

Pattern.matches("[A-Z]", input)

Где ввод CharSequence. Дополнительная информация о классе Java Pattern: http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

Не знаю, как это сравнило бы производительность с другими вариантами.

1 голос
/ 27 июля 2011

Как насчет Character.isLetter ()?

...