位元組跳動面試題 駝峰變數名轉換為下劃線式的 OneHTTOPRequest
阿新 • • 發佈:2018-12-17
package 考試位元組跳動; /** 3 abcdef changeName OnHTTPRequest * */ import java.util.Scanner; public class ChangeName { public static void main(String[] args) { @SuppressWarnings("resource") Scanner scanner = new Scanner(System.in); int a = scanner.nextInt();//需要轉換幾組資料 String[] strings = new String[a];//建立一個相應大小的字串陣列 int flag = 0;//做一個標記數 //0.獲取 將輸入的一定數量的字串分別放進建立的陣列中 do { strings[flag] = scanner.next(); flag++; a--; } while (a > 0); // for (int i = 0; i < flag; i++) { StringBuffer sb = new StringBuffer();//使用StringBuffer String str = strings[i];//將字串輪流寄存在臨時的str中 //1.首字元會造成干擾,先將首字母無論大小寫改成小寫 if (Character.isUpperCase(str.charAt(0))) { sb.append((char) (str.charAt(0) + 32)); } else { sb.append(str.charAt(0)); } for (int j = 1; j < str.length(); j++) { sb.append(str.charAt(j)); } //System.out.println(sb.toString()); //2.發現規律 _Mm m_M 小謝大寫 中插'_' 大寫小寫 前插'_'; for (int ii = 0; ii < sb.length() - 1; ii++) { if (Character.isLowerCase(sb.charAt(ii)) && Character.isUpperCase(sb.charAt(ii + 1))) { sb.insert(ii + 1, '_'); ii++; continue; } if (Character.isUpperCase(sb.charAt(ii)) && Character.isLowerCase(sb.charAt(ii + 1))) { if ('_' == (sb.charAt(ii - 1))) { continue; } else { sb.insert(ii, '_'); ii++; } } } //插完下劃線後將剩下的大寫全部變成小寫 for (int iii = 0; iii < sb.length(); iii++) { if (Character.isUpperCase(sb.charAt(iii))) { sb.setCharAt(iii,(char) (sb.charAt(iii)+32)); } } //輸出每次轉換後的結果 System.out.println(sb.toString()); } } }