java代码如何将字符串的驼峰和下划线互相转换呢?
下文笔者讲述java代码将字符串中驼峰命名转换为下划线的方法及示例分享,如下所示
驼峰转下划线的实现思路
Gauva中的CaseFormat类可实现此类转换 Hutool中的工具类可实现此类转换 自定义代码实现相应的转换
Gauva:CaseFormat类
// 驼峰转下划线
String ans = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "helloWorld");
System.out.println(ans); //hello_world
// 下划线转驼峰
String ans2 = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hello_world");
System.out.println(ans2); //helloWorld
==注意==:
驼峰转下划线,一般指将大写字母转小写,并将大写字母前面加上下划线;
下线线转驼峰,一般指将下划线去掉,并将下划线后面的一个字母转为大写
注意事项:
对于不规则的输入
如:
helloworldCase, 驼峰转下划线一般会转成:helloworld_case;
helloworld_case,下划线转驼峰一般会转成helloworldCase
Hutool:StrUtil类
//下划线转驼峰
String ans = StrUtil.toCamelCase("hello_world");
System.out.println(ans); //helloWorld
//驼峰转下划线
String ans2 = StrUtil.toUnderlineCase("helloWorld"); System.out.println(ans2); //hello_world
自定义实现
驼峰转下划线
关键点:大写字母
则前位补一个下划线
当前字符转小写
public static String toUnderCase(String name) {
if (name == null) {
return null;
}
int len = name.length();
StringBuilder res = new StringBuilder(len + 2);
char pre = 0;
for (int i = 0; i < len; i++){
char ch = name.charAt(i);
if (Character.isUpperCase(ch)) {
if (pre != UNDER_LINE) {
res.append(UNDER_LINE);
}
res.append(Character.toLowerCase(ch));
} else {
res.append(ch);
}
pre = ch;
}
return res.toString();
}
下划线转驼峰
找到下划线 然后去掉它 下一个字符转大写续上(如果下一个还是下划线,那 继续找下一个)
private static final char UNDER_LINE = '_';
/**
* 下划线转驼峰 *
*
* @param name * @return
*/
public static String toCamelCase(String name) {
if (null == name || name.length() == 0) {
return null;
}
int length = name.length();
StringBuilder sb = new StringBuilder(length);
boolean underLineNextChar = false;
for (int i = 0; i < length; ++i) {
char c = name.charAt(i);
if (c == UNDER_LINE) {
underLineNextChar = true;
} else if (underLineNextChar) {
sb.append(Character.toUpperCase(c));
underLineNextChar = false;
} else {
sb.append(c);
}
}
return sb.toString();
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


