/** * 將駝峯式命名的字符串轉換爲下劃線大寫方式。若是轉換前的駝峯式命名的字符串爲空,則返回空字符串。</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(); }