用新字符串替换字符串中的所有大写字母

Replace all UpperLetters in a string with a new String

我有一个 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;
    }

我只想知道是否可以用更简洁的方式完成。

建议:使用正则表达式,在大写字符前加上下划线(但不是在开头,因此后面看是负面的(?!^)),将结果转换为小写:

String input = "UserTable";
String result = input.replaceAll("(?!^)([A-Z])", "_").toLowerCase();
System.out.println(result); // user_table

您可以使用 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();