您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Java算法之串如何處理”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Java算法之串如何處理”這篇文章吧。
題目如下:
串的處理
在實(shí)際的開發(fā)工作中,對(duì)字符串的處理是最常見的編程任務(wù)。
本題目即是要求程序?qū)τ脩糨斎氲拇M(jìn)行處理。具體規(guī)則如下:
1. 把每個(gè)單詞的首字母變?yōu)榇髮憽?/p>
2. 把數(shù)字與字母之間用下劃線字符(_)分開,使得更清晰
3. 把單詞中間有多個(gè)空格的調(diào)整為1個(gè)空格。
例如:
用戶輸入:
you and me what cpp2005program
則程序輸出:
You And Me What Cpp_2005_program
用戶輸入:
this is a 99cat
則程序輸出:
This Is A 99_cat
我們假設(shè):用戶輸入的串中只有小寫字母,空格和數(shù)字,不含其它的字母或符號(hào)。
每個(gè)單詞間由1個(gè)或多個(gè)空格分隔。
假設(shè)用戶輸入的串長(zhǎng)度不超過200個(gè)字符。
方法一:
public class 串的簡(jiǎn)單處理 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String string = scanner.nextLine(); Vector<Character> vector = new Vector<Character>(); for (int i = 0; i < string.length(); i++) { vector.add(string.charAt(i)); } try { int index = 0; while (index < vector.size()) { //判斷第一個(gè)是否為小寫的英文字符,是的話進(jìn)行操作 if (index == 0 && vector.elementAt(index) >= 'a' && vector.elementAt(index) <= 'z') { //Replaces the element at the specified position in this Vector with the specified element vector.set(index,(char) (vector.elementAt(index) - ('a' - 'A'))); } else if (vector.elementAt(index - 1) == ' '&& vector.elementAt(index) == ' ') { //處理有多個(gè)空格的可能 vector.remove(index); index--; } else if (vector.elementAt(index - 1) == ' ' && (vector.elementAt(index) >= 'a' && vector .elementAt(index) <= 'z')) { //判斷是空格后邊的字符 vector.set(index, (char) (vector.elementAt(index) - ('a' - 'A'))); } else if ((vector.elementAt(index) >= 'a' && vector .elementAt(index) <= 'z') && (vector.elementAt(index - 1) >= '0' && vector .elementAt(index - 1) <= '9')) { vector.add(index, '_'); index++; } else if ((vector.elementAt(index - 1) >= 'a' && vector .elementAt(index - 1) <= 'z') && (vector.elementAt(index) >= '0' && vector .elementAt(index) <= '9')) { //判斷的是數(shù)字 vector.add(index, '_'); index++; } index++; } for (int i = 0; i < vector.size(); i++) { System.out.print(vector.elementAt(i)); } System.out.println(); } catch (ArrayIndexOutOfBoundsException e) { } } }
方法二:主要用到正則表達(dá)式對(duì)字符串進(jìn)行截取,然后對(duì)每一個(gè)字符數(shù)組的元素進(jìn)行正則匹配,含有數(shù)字的單獨(dú)進(jìn)行處理
public class SimpleString { // 打印字符串的函數(shù) public static void print(String[] s) { for (int i = 0; i < s.length - 1; i++) { System.out.print(s[i] + " "); } System.out.println(s[s.length - 1]); } public static void main(String[] args) { Scanner scan = new Scanner(System.in); String s = scan.nextLine(); String[] ss = s.split("[\\s]+"); // 根據(jù)正則表達(dá)式,刪除一個(gè)或多個(gè)空格,將字符串保存為字符數(shù)組 for (int i = 0; i < ss.length; i++) { // 將每一個(gè)字符數(shù)組的首字母改為大寫 String up = ("" + ss[i].charAt(0)).toUpperCase(); // 大寫 StringBuffer sb = new StringBuffer(ss[i]); ss[i] = sb.replace(0, 1, up).toString(); // 上邊已經(jīng)把字符串?dāng)?shù)組的首字母該為大寫,然后對(duì)更改后的字符數(shù)組判斷是否有數(shù)字 Matcher m = Pattern.compile("\\d+").matcher(ss[i]);// 0-9出現(xiàn)一次或多次 while (m.find()) { // m.group():Returns the input subsequence matched by the previous match String num = new String(m.group()); String num2 = num; num2 = "_" + num + "_"; // 數(shù)字前后都添加"_" ss[i] = ss[i].replace(num, num2); if (ss[i].startsWith("_")) { // 去頭"_" ss[i] = ss[i].substring(1); } if (ss[i].endsWith("_")) { // 去尾"_" ss[i] = ss[i].substring(0, ss[i].length() - 1); } } } print(ss); } }
以上是“Java算法之串如何處理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。