美文网首页
驼峰与下划线转换工具

驼峰与下划线转换工具

作者: 不知不怪 | 来源:发表于2022-12-31 14:16 被阅读0次
package com.gzz.server;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import lombok.extern.slf4j.Slf4j;
/**
 * @summary 驼峰与下划线转换工具
 * @author 高振中
 * @date 2023-01-01 12:00:00
 **/
@Slf4j
public class TextTools {
    public static void main(String[] args) {
        String str = "create_time_date_hello_world";
        log.info(TextTools.toLowerCamel(str));
        log.info(TextTools.toUpperCamel(str));
        str = "CreateTimeDateHelloWorld";
        log.info(TextTools.toLine(str));
        str = "createTimeDateHelloWorld";
        log.info(TextTools.toLine(str));
        log.info(System.getProperty("os.name"));
    }
    private static final String LINE = "_";
    /**
     * 驼峰-->下划线
     */
    public static String toLine(String word) {
        StringBuilder sb = new StringBuilder();
        char[] chars = word.toCharArray();
        sb.append(Character.toLowerCase(chars[0]));// 第1个字符转小写
        for (int i = 1; i < chars.length; i++)// 从第2字符开始:遇到大写 前面加_字符转成小写 否则直接拼上
            sb.append(Character.isUpperCase(chars[i]) ? LINE + Character.toLowerCase(chars[i]) : chars[i]);
        return sb.toString();
    }
    /**
     * 下划线-->首字母大写驼峰
     */
    public static String toUpperCamel(String word) {
        char[] chars = toLowerCamel(word).toCharArray();
        chars[0] -= 32;
        return new String(chars);
    }
    /**
     * 下划线-->首字母小写驼峰
     */
    public static String toLowerCamel(String word) {
        StringBuilder sb = new StringBuilder(word);
        Matcher mc = Pattern.compile(LINE).matcher(word);
        for (int i = 0; mc.find(); i++) // 每次替换_x为X,同时因为长度减少1偏移量调整1
            sb.replace(mc.end() - i - 1, mc.end() - i + 1, sb.substring(mc.end() - i, mc.end() - i + 1).toUpperCase());
        return sb.toString();
    }
}

相关文章

网友评论

      本文标题:驼峰与下划线转换工具

      本文链接:https://www.haomeiwen.com/subject/xnqqcdtx.html