java代码如何将字符串的驼峰和下划线互相转换呢?

欣喜 Java经验 发布时间:2023-12-06 11:01:36 阅读数:411 1
下文笔者讲述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();
    }
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202312/17018317337397.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者