字符串的下劃線命名和駝峯命名轉換

原文鏈接:https://www.cnblogs.com/hedianzhan/p/9526894.html
/**
 * 將駝峯式命名的字符串轉換爲下劃線大寫方式。如果轉換前的駝峯式命名的字符串爲空,則返回空字符串。</br>
 * 例如:HelloWorld->HELLO_WORLD
 * @param name 轉換前的駝峯式命名的字符串
 * @return 轉換後下劃線大寫方式命名的字符串
 */
public static String underscoreName(String name) {
    StringBuilder result = new StringBuilder();
    if (name != null && name.length() > 0) {
        // 將第一個字符處理成大寫
        result.append(name.substring(0, 1).toUpperCase());
        // 循環處理其餘字符
        for (int i = 1; i < name.length(); i++) {
            String s = name.substring(i, i + 1);
            // 在大寫字母前添加下劃線
            if (s.equals(s.toUpperCase()) && !Character.isDigit(s.charAt(0))) {
                result.append("_");
            }
            // 其他字符直接轉成大寫
            result.append(s.toUpperCase());
        }
    }
    return result.toString();
}
/**
 * 將下劃線大寫方式命名的字符串轉換爲駝峯式。如果轉換前的下劃線大寫方式命名的字符串爲空,則返回空字符串。</br>
 * 例如:HELLO_WORLD->HelloWorld
 * @param name 轉換前的下劃線大寫方式命名的字符串
 * @return 轉換後的駝峯式命名的字符串
 */
public static String camelName(String name) {
    StringBuilder result = new StringBuilder();
    // 快速檢查
    if (name == null || name.isEmpty()) {
        // 沒必要轉換
        return "";
    } else if (!name.contains("_")) {
        // 不含下劃線,僅將首字母小寫
        return name.substring(0, 1).toLowerCase() + name.substring(1);
    }
    // 用下劃線將原始字符串分割
    String camels[] = name.split("_");
    for (String camel :  camels) {
        // 跳過原始字符串中開頭、結尾的下換線或雙重下劃線
        if (camel.isEmpty()) {
            continue;
        }
        // 處理真正的駝峯片段
        if (result.length() == 0) {
            // 第一個駝峯片段,全部字母都小寫
            result.append(camel.toLowerCase());
        } else {
            // 其他的駝峯片段,首字母大寫
            result.append(camel.substring(0, 1).toUpperCase());
            result.append(camel.substring(1).toLowerCase());
        }
    }
    return result.toString();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章