Подтвердить что ты не робот

Как проверить, является ли строка допустимой переменной java?

Как я могу лучше проверить, будет ли строковый ввод корректной переменной java для кодирования? Я уверен, что я не первый, кто готов это сделать. Но, возможно, мне не хватает правильного ключевого слова, чтобы найти что-то полезное.

Лучшим может быть RegEx, который проверяет, что:

  • начинается с буквы

  • может содержать цифры, буквы

  • может содержать некоторые специальные символы, такие как '_' (что?)

  • может не содержать разделителя пробелов
4b9b3361

Ответ 1

public static boolean isValidJavaIdentifier(String s) {
    if (s.isEmpty()) {
        return false;
    }
    if (!Character.isJavaIdentifierStart(s.charAt(0))) {
        return false;
    }
    for (int i = 1; i < s.length(); i++) {
        if (!Character.isJavaIdentifierPart(s.charAt(i))) {
            return false;
        }
    }
    return true;
}

EDIT: и, как указывает @Joey, вы также должны отфильтровывать ключевые слова и зарезервированные слова.

Ответ 2

Просто используйте встроенный метод isName:

public static boolean isName(CharSequence name)

Возвращает, является ли имя синтаксически допустимым квалифицированным именем в последней исходной версии.

См. документацию isName().