亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java算法之串的簡單處理

 更新時間:2019年03月28日 14:49:45   作者:徐劉根  
今天小編就為大家分享一篇關于Java算法之串的簡單處理,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

題目如下:

串的處理

在實際的開發(fā)工作中,對字符串的處理是最常見的編程任務。

本題目即是要求程序對用戶輸入的串進行處理。具體規(guī)則如下:

1. 把每個單詞的首字母變?yōu)榇髮憽?/p>

2. 把數(shù)字與字母之間用下劃線字符(_)分開,使得更清晰

3. 把單詞中間有多個空格的調整為1個空格。

例如:

用戶輸入:

you and me what cpp2005program

則程序輸出:

You And Me What Cpp_2005_program

用戶輸入:

this is a 99cat

則程序輸出:

This Is A 99_cat

我們假設:用戶輸入的串中只有小寫字母,空格和數(shù)字,不含其它的字母或符號。

每個單詞間由1個或多個空格分隔。

假設用戶輸入的串長度不超過200個字符。

方法一:

public class 串的簡單處理 {
  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()) {
        //判斷第一個是否為小寫的英文字符,是的話進行操作
        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) == ' ') {
          //處理有多個空格的可能
          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) {
    }
  }
}

方法二:主要用到正則表達式對字符串進行截取,然后對每一個字符數(shù)組的元素進行正則匹配,含有數(shù)字的單獨進行處理

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ù)正則表達式,刪除一個或多個空格,將字符串保存為字符數(shù)組
    for (int i = 0; i < ss.length; i++) {
      // 將每一個字符數(shù)組的首字母改為大寫
      String up = ("" + ss[i].charAt(0)).toUpperCase(); // 大寫
      StringBuffer sb = new StringBuffer(ss[i]);
      ss[i] = sb.replace(0, 1, up).toString();
      // 上邊已經(jīng)把字符串數(shù)組的首字母該為大寫,然后對更改后的字符數(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中String的兩種賦值方式的區(qū)別

    淺談java中String的兩種賦值方式的區(qū)別

    這篇文章主要介紹了淺談java中String的兩種賦值方式的區(qū)別。簡單介紹了兩種賦值方式,然后進行了實例分析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 一文詳解Spring?中的順序問題

    一文詳解Spring?中的順序問題

    本文主要介紹了Spring?中的順序問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • Java實體類中Set按照對象的某個字段對set排序

    Java實體類中Set按照對象的某個字段對set排序

    這篇文章主要介紹了Java實體類中Set按照對象的某個字段對set排序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-06-06
  • Java后端接入微信小程序實現(xiàn)登錄功能

    Java后端接入微信小程序實現(xiàn)登錄功能

    這篇文章主要介紹了Java如何在后端接入微信小程序從而實現(xiàn)登錄功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06
  • java實現(xiàn)ssh連接服務器的方法步驟

    java實現(xiàn)ssh連接服務器的方法步驟

    本文主要介紹了java實現(xiàn)ssh連接服務器的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09
  • Java實現(xiàn)監(jiān)聽UDP協(xié)議的指定端口并收到數(shù)據(jù)按照十六進制輸出方式

    Java實現(xiàn)監(jiān)聽UDP協(xié)議的指定端口并收到數(shù)據(jù)按照十六進制輸出方式

    這篇文章主要介紹了Java實現(xiàn)監(jiān)聽UDP協(xié)議的指定端口并收到數(shù)據(jù)按照十六進制輸出方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 詳解springboot如何更新json串里面的內容

    詳解springboot如何更新json串里面的內容

    這篇文章主要為大家介紹了springboot 如何更新json串里面的內容,文中有詳細的解決方案供大家參考,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-10-10
  • 讓Java代碼更高效

    讓Java代碼更高效

    這篇文章主要介紹了如何讓你的Java代碼更高效,讓Java跑得更快,感興趣的小伙伴們可以參考一下
    2015-09-09
  • SpringBoot配置actuator的代碼

    SpringBoot配置actuator的代碼

    這篇文章主要介紹了SpringBoot配置actuator,這里大家需要注意可以監(jiān)控SpringBoot?中的?Tomcat?性能數(shù)據(jù),?以日志形式定期輸出監(jiān)控數(shù)據(jù),?只需要配置一個Bean,需要的朋友可以參考下
    2022-03-03
  • Java listener簡介_動力節(jié)點Java學院整理

    Java listener簡介_動力節(jié)點Java學院整理

    這篇文章主要介紹了Java listener簡介,可以用于統(tǒng)計用戶在線人數(shù)等,有興趣的可以了解一下
    2017-07-07

最新評論