1. 程式人生 > >【藍橋杯】【串的簡單處理】

【藍橋杯】【串的簡單處理】

題目
在實際的開發工作中,對字串的處理是最常見的程式設計任務。
本題目即是要求程式對使用者輸入的串進行處理。具體規則如下:
1. 把每個單詞的首字母變為大寫。
2. 把數字與字母之間用下劃線字元(_)分開,使得更清晰
3. 把單詞中間有多個空格的調整為1個空格。
例如:
使用者輸入:
you and me what cpp2005program
則程式輸出:
You And Me What Cpp_2005_program
使用者輸入:
this is a 99cat
則程式輸出:
This Is A 99_cat
我們假設:使用者輸入的串中只有小寫字母,空格和數字,不含其它的字母或符號。
每個單詞間由1個或多個空格分隔。
假設使用者輸入的串長度不超過200個字元。

分析
這個題目非常好,對字串API的熟練掌握是一個程式設計師的基本要求。
‘0’的數值是48,’9’的數值是57,’a’的數值97,’z’的數值122
97-57=40
兩個字元相減,絕對值大於或者等於40,說明一個是字母,一個是數字,需要新增下劃線。

原始碼

    public static void main(String[] args) {

        //接收一行字串
        Scanner sc = new Scanner(System.in);
        String inputS = sc.nextLine();
        sc.close();

        //分割字串,得到字串陣列
String[] ss = inputS.split(" "); ArrayList<String> list= new ArrayList<String>(); for (String s : ss) { //純空格的字串不要,需要過濾掉 if(!s.trim().equals("")){ for(int i=0; i<s.length()-1;i++){ int j = i+1; char
c1 = s.charAt(i); char c2 = s.charAt(j); if(Math.abs(c2-c1) >= 40){ //絕對值大於或者等於40,說明一個字元是字母,一個是字元數字,需要新增下劃線 s = s.substring(0, j) + "_" + s.substring(j, s.length()); i = j+1; j = i+1; } } //'A' - 'a' = 32 s = s.replaceFirst(String.valueOf(s.charAt(0)), String.valueOf(s.charAt(0)).toUpperCase()); list.add(s); } } StringBuilder sb = new StringBuilder(); for (int i=0; i<list.size(); i++) { sb.append(list.get(i)); if(i != list.size()-1){ sb.append(" "); } } System.out.println(sb); }