Как проверить, является ли строка допустимой переменной java?
Как я могу лучше проверить, будет ли строковый ввод корректной переменной java для кодирования? Я уверен, что я не первый, кто готов это сделать. Но, возможно, мне не хватает правильного ключевого слова, чтобы найти что-то полезное.
Лучшим может быть RegEx, который проверяет, что:
-
начинается с буквы
-
может содержать цифры, буквы
-
может содержать некоторые специальные символы, такие как '_' (что?)
- может не содержать разделителя пробелов
Ответы
Ответ 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().