字符串工具类-StringUtils

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Copyright (C), 2011-2018 {company}
 * FileName: com.common.utils.StringUtils.java
 * Author: xxx
 * Email: xxx
 * Date: 2018/6/23 12:02
 * Description: 字符串工具类
 * History:
 * <Author>      <Time>    <version>    <desc>
 * {xxx}   12:02    1.0          Create
 */
public class StringUtils {
    private static Pattern linePattern = Pattern.compile("_(\\w)");
    private static Pattern humpPattern = Pattern.compile("[A-Z]");

    /**
     * 划线转驼峰
     * @param str
     * @return
     */
    public static String lineToHump(String str){
        str = str.toLowerCase();
        Matcher matcher = linePattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while(matcher.find()){
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    /**
     * 划线转驼峰(对map中的key进行转换)
     * @param map
     * @return
     */
    public static Map lineToHump(Map map){
        if(map == null){
            return null;
        }
        Set keySet = map.keySet();
        for (Iterator i = keySet.iterator(); i.hasNext();) {
            String key = (String) i.next();
            Object value =  map.get(key);
            // 划线转驼峰
            String newKey = lineToHump(key);
            map.remove(key);
            map.put(newKey, value);
        }
        return map;
    }

    /**
     * 驼峰转下划线
     * @param str
     * @return
     */
    public static String humpToLine(String str){
        Matcher matcher = humpPattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while(matcher.find()){
            matcher.appendReplacement(sb, "_"+matcher.group(0).toLowerCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    public static void main(String[] args) {
        System.out.println(lineToHump("cust_no"));
        System.out.println(humpToLine("custNo"));
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42231507/article/details/80899731
今日推荐