驼峰字符串和指定分割符字符串之间的相互转换

    /**
     *         驼峰转成指定连接符连接的字符串。如:orderStatus -> order_status
     *
     * @param sourStr 需要转换的字符串,如:orderStatus
     * @param charType 1、全小写,2,全大写
     * @param connectChar  连接符,如:_
     * @return 转换后的字符串,如:order_status
     */
    public String camelToConnect(String sourStr, Integer charType, char connectChar) {
        if (sourStr == null || "".equals(sourStr.trim())) {
            return "";
        }
        int len = sourStr.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = sourStr.charAt(i);
            if (Character.isUpperCase(c)) {
                sb.append(connectChar);
            }
            if (charType == 2) {
                sb.append(Character.toUpperCase(c));
            } else {
                sb.append(Character.toLowerCase(c));
            }


        }
        return sb.toString();
    }

    /**
     *         指定连接符连接的字符串转换成驼峰。如:order_status -> orderStatus
     *
     * @param sourStr
     * @param connectChar 原字符串的连接符。如:_
     * @return
     */
    public  String connectToCamel(String sourStr, char connectChar) {
        if (sourStr == null || "".equals(sourStr.trim())) {
            return "";
        }
        int len = sourStr.length();
        StringBuilder sb = new StringBuilder(len);
        // 转大写标志
        Boolean flag = false;
        for (int i = 0; i < len; i++) {
            char c = sourStr.charAt(i);
            // 当前字符为连接符,也就是后面一个字符要变大写,所以跳过,不要它,并将flag=true,下一个遍历的字符进行大写转换
            if (c == connectChar) {
                flag = true;
                continue;
            } else {
                // 说明刚才遍历到了连接符,当前字符转大写
                if (flag == true) {
                    sb.append(Character.toUpperCase(sourStr.charAt(i)));
                    flag = false;
                } else {
                    sb.append(Character.toLowerCase(sourStr.charAt(i)));
                }
            }
        }
        return sb.toString();
    }

测试:

 

posted @ 2021-03-10 15:43  hy_wx  阅读(205)  评论(0编辑  收藏  举报