对于这个问题,我真的可以使用一些帮助... char *replace(char *s, char *pat, char *rep) 返回字符串s的副本,但是pat每个实例都被rep替换。 请注意, len(pat)可以小于,大于或等于len(rep) 。 该函数为结果字符串分 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有一个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])", "_$1").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();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.