1. 程式人生 > 其它 >java 將大寫欄位全部改為小寫並增加下劃線

java 將大寫欄位全部改為小寫並增加下劃線

前言

因為一些原因,需要使用到mybatsPlus 資料庫欄位的駝峰,必須是下劃線,實體類裡則可以使用駝峰命名
貼程式碼

/**
 * Create by wanghongliang
 * 2021/6/16 10:15
 **/

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Stream;

/**
 * TODO
 *
 * @author wanghongliang
 * @version 1.0
 * @desc
 * @date 2021/6/16 10:15
 */
public class AzTest {
    public static void main(String[] args) {
        readStream();
//        System.out.println(upperCharToUnderLine("autoGenSerialNumFormat"));
    }

    public static String readStream() {
        Path filePath = Paths.get("C:/Users/Administrator/Desktop", "item_test.txt");
        try (Stream lines = Files.lines(filePath)) {
            lines.forEach(E ->
                    System.out.println(upperCharToUnderLine(E.toString()))
            );
//            lines.forEach(System.out::println);

        } catch (IOException e) {
            e.printStackTrace();//只是測試用例,生產環境下不要這樣做異常處理

        }
        return "";
    }

    public static String upperCharToUnderLine(String param) {
        Pattern p = Pattern.compile("[A-Z]");
        if (param == null || param.equals("")) {
            return "";
        }
        StringBuilder builder = new StringBuilder(param);
        Matcher mc = p.matcher(param);
        int i = 0;
        while (mc.find()) {
//            System.out.println(builder.toString());
//            System.out.println("mc.start():" + mc.start() + ", i: " + i);
//            System.out.println("mc.end():" + mc.start() + ", i: " + i);
            builder.replace(mc.start() + i, mc.end() + i, "_" + mc.group().toLowerCase());
            i++;
        }

        if ('_' == builder.charAt(0)) {
            builder.deleteCharAt(0);
        }
        return builder.toString();
    }
}

-----------------------------------------

以上程式碼會將大寫字母替換成小寫並增加下劃線
autoGenSerialNumFormat
auto_gen_serial_num_format