我有一个UserTable格式的字符串。我希望输出为user_table。基本上用“_”和字母替换所有大写字母。比如R=_R
。
我有这个代码,它工作正常。
public static String getTableName(String clazz){
String name = (clazz.charAt(0)+"").toLowerCase();
for(int itr=1;itr<clazz.length();itr++){
char ch = clazz.charAt(itr);
if(ch >=97 && ch <=122)
name += ch;
else
name += ("_"+ ch).toLowerCase() ;
}
return name;
}
如果能以更简洁的方式完成,我只想要。
答案 0 :(得分:6)
建议:使用正则表达式,前缀大写字符前缀为下划线(不是在开头,因此负面看(?!^)
),将结果转换为小写:
String input = "UserTable";
String result = input.replaceAll("(?!^)([A-Z])", "_$1").toLowerCase();
System.out.println(result); // user_table
答案 1 :(得分:0)
您可以使用StringBuilder
来实现此目的:
StringBuilder builder = new StringBuilder();
String input = "UserTable";
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
if (i > 0 && Character.isUpperCase(ch)) {
builder.append('_');
}
builder.append(Character.toLowerCase(ch));
}
String result = builder.toString();