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(); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。