最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java算法之串的簡單處理

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

題目如下:

串的處理

在實(shí)際的開發(fā)工作中,對字符串的處理是最常見的編程任務(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ù)字,不含其它的字母或符號。

每個(gè)單詞間由1個(gè)或多個(gè)空格分隔。

假設(shè)用戶輸入的串長度不超過200個(gè)字符。

方法一:

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()) {
        //判斷第一個(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á)式對字符串進(jìn)行截取,然后對每一個(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ù)組的首字母該為大寫,然后對更改后的字符數(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);
  }
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

相關(guān)文章

  • SpringBoot常見錯(cuò)誤圖文總結(jié)

    SpringBoot常見錯(cuò)誤圖文總結(jié)

    最近在使用idea+Springboot開發(fā)項(xiàng)目中遇到一些問題,這篇文章主要給大家介紹了關(guān)于SpringBoot常見錯(cuò)誤總結(jié)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java concurrency之AtomicLongFieldUpdater原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之AtomicLongFieldUpdater原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    AtomicLongFieldUpdater可以對指定"類的 'volatile long'類型的成員"進(jìn)行原子更新。它是基于反射原理實(shí)現(xiàn)的。下面通過本文給大家分享Java concurrency之AtomicLongFieldUpdater原子類的相關(guān)知識,感興趣的朋友一起看看吧
    2017-06-06
  • MyBatis控制臺(tái)顯示SQL語句的方法實(shí)現(xiàn)

    MyBatis控制臺(tái)顯示SQL語句的方法實(shí)現(xiàn)

    這篇文章主要介紹了MyBatis控制臺(tái)顯示SQL語句的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 基于Java實(shí)現(xiàn)Redis多級緩存方案

    基于Java實(shí)現(xiàn)Redis多級緩存方案

    這篇文章主要介紹了Redis多級緩存方案分享,傳統(tǒng)緩存方案、多級緩存方案、JVM本地緩存,舉例說明這些方案,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-03-03
  • Java基于Calendar類輸出指定年份和月份的日歷代碼實(shí)例

    Java基于Calendar類輸出指定年份和月份的日歷代碼實(shí)例

    這篇文章主要介紹了Java 使用Calendar類輸出指定年份和月份的日歷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java 讀取圖片的mimeType的方法

    Java 讀取圖片的mimeType的方法

    本篇文章主要介紹了Java 讀取圖片的mimeType的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Intellij IDEA 與maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound

    Intellij IDEA 與maven 版本不符 Unable to import maven project See

    這篇文章主要介紹了Intellij IDEA 與maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound,本文通過圖文給大家分享解決方案,需要的朋友可以參考下
    2020-08-08
  • Java 創(chuàng)建PDF打印小冊子案例

    Java 創(chuàng)建PDF打印小冊子案例

    這篇文章主要給大家分享Java 創(chuàng)建PDF打印小冊子案例,PDF打印小冊子是指將PDF格式文檔在打印成刊物前需要提前進(jìn)行的頁面排版,以便在打印后裝訂成冊,下面文章內(nèi)容我們將下面以Java代碼展示如何來實(shí)現(xiàn),需要的朋友可以參考一下
    2021-10-10
  • Java騷操作之CountDownLatch代碼詳解

    Java騷操作之CountDownLatch代碼詳解

    這篇文章主要介紹了Java騷操作之CountDownLatch代碼詳解,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • IDEA 包轉(zhuǎn)模塊的解決步驟

    IDEA 包轉(zhuǎn)模塊的解決步驟

    很多朋友遇到這樣一個(gè)問題,直接在idea拉取代碼,發(fā)現(xiàn)創(chuàng)建的模塊包類型不一樣了,類似這樣的問題該如何處理呢?很多朋友向小編求助,在這統(tǒng)一回答大家,需要的朋友參考下本文吧
    2021-06-06

最新評論

资溪县| 额敏县| 台中县| 汉中市| 大兴区| 武定县| 武威市| 沂南县| 库车县| 临颍县| 垣曲县| 阿巴嘎旗| 义马市| 太谷县| 玉屏| 长子县| 徐州市| 池州市| 盐津县| 高密市| 平阴县| 临猗县| 岗巴县| 老河口市| 孙吴县| 千阳县| 海城市| 富顺县| 南陵县| 四平市| 阳信县| 汶川县| 新津县| 思茅市| 乌拉特前旗| 克什克腾旗| 尼玛县| 微山县| 新建县| 龙口市| 三河市|