对于我正在使用的代码生成工具,我需要获取一个字符串并从中生成一个有效的 Java 变量名,但我不确定最好的方法。
例如:
“123 这是一些消息!”
=> _123_this_is_some_message
(或类似的东西)
谢谢
最佳答案
假设您用 _
替换所有无效字符,下面的代码可能会起作用(粗略示例)。您可能想为名称冲突等添加一些逻辑。它基于 on the JLS #3.8 :
An identifier is an unlimited-length sequence of Java letters and Java digits, the first of which must be a Java letter.
[...]
A "Java letter" is a character for which the method Character.isJavaIdentifierStart(int) returns true.
A "Java letter-or-digit" is a character for which the method Character.isJavaIdentifierPart(int) returns true.
public static void main(String[] args) {
String s = "123 sdkjh s;sdlkjh d";
StringBuilder sb = new StringBuilder();
if(!Character.isJavaIdentifierStart(s.charAt(0))) {
sb.append("_");
}
for (char c : s.toCharArray()) {
if(!Character.isJavaIdentifierPart(c)) {
sb.append("_");
} else {
sb.append(c);
}
}
System.out.println(sb);
}
关于java - 将字符串转换为有效的 Java 变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12754416/