附代码!Java 驼峰与下划线相互转换工具类

原创 HuangLongPu     发表于  2022-05-11 17:07       5
原文链接:

在 Java 开发过程中,我们经常会遇到驼峰与下划线方式命名的相互转换,例如:user_id 转为 userId,或者 userId 转为 user_id。其实方法相对比较简单,如下复制代码到项目中即可直接使用。

import org.apache.commons.lang3.StringUtils;

/**
 * @Desc 驼峰相互转换类
 * @Author HuangLongPu
 * @Date 2022/5/11 17:00
 **/
public class CamelConvert {

    /**
     * 下划线字符,用于业务代码比较判断
     **/
    private static final char UNDER_LINE = '_';

    /**
     * @Desc 驼峰转下划线
     * @MethodName toUnderline
     * @param fieldName
     * @Author HuangLongPu
     * @Date 2022/5/11 16:50
     **/
    public static String toUnderline(String fieldName){

        if (StringUtils.isEmpty(fieldName)){
            return "";
        }

        int len = fieldName.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char ch = fieldName.charAt(i);
            if (Character.isUpperCase(ch)){
                sb.append(UNDER_LINE);
                sb.append(Character.toLowerCase(ch));
            }else{
                sb.append(ch);
            }
        }
        return sb.toString();
    }

    /**
     * @Desc 下划线转驼峰
     * @MethodName toCamel
     * @param fieldName
     * @Author HuangLongPu
     * @Date 2022/5/11 16:51
     **/
    public static String toCamel(String fieldName){
        if (StringUtils.isEmpty(fieldName)){
            return "";
        }

        int len = fieldName.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char ch = fieldName.charAt(i);
            if (ch == UNDER_LINE){
                // 当判断到下划线时,位置序号加1
                ++i;
                sb.append(Character.toUpperCase(fieldName.charAt(i)));
            } else{
                sb.append(ch);
            }
        }
        return sb.toString();
    }


    public static void main(String[] args) {
        String fieldName = "userId";
        String resFieldName = toUnderline(fieldName);
        System.out.println(resFieldName);
        System.out.println(toCamel(resFieldName));
    }
}

相关文章

HuangLongPu
5
27951/45000
文章数
190
阅读量
101936
原创
147
广告
公众号
QQ讨论群