字串處理(String、StringBuilder、StringBuffer)

摘要:字串處理(String、StringBuilder、StringBuffer)

String物件是我們經常會運用的一種物件,因此在這邊特別提出作介紹。首先先示範一些String常用的一些方法:

        String str = "測試abcABC字串"; 
        System.out.println(str.length()); 
        System.out.println(str.charAt(2)); 
        System.out.println(str.equals("測試abcABC字串")); 
        System.out.println(str.contains("測試")); 
        System.out.println(str.endsWith("字串")); 
        System.out.println(str.startsWith("測試")); 
        System.out.println(str.indexOf("試")); 
        System.out.println(str.substring(0,2)); 
        System.out.println(str.substring(2)); 
        System.out.println(str.toLowerCase()); 
        System.out.println(str.toUpperCase()); 
        System.out.println(str.replace("ABC","DEF")); 
        System.out.println(str.replaceAll("ABC","DEF")); 
        String[] strArray = str.split("abc");

  • 首先第1行我們宣告了一個String變數,並指定它的內容。
  • 第2行用length()方法取得字串內容的字數。
  • 第3行用charAt()取得某個位置的文字。
  • 第4行用equals()來比較字串和另一個字串是否相同。
  • 第5行用contains()來判斷字串中是否包含某個文字。
  • 第6行及第7行分別用endsWith()及startsWith()來判斷字串是否以某個字串結尾及開頭。
  • 第8行用indexOf()來取得某個文字在字串中的位置。
  • 第9行和第10行都是用substring()來切割字串,不同的地方在第9行帶入兩個參數,字串會切隔為從第一個參數位置到第二個參數位置的子字串,第10行帶入一個參數則會切割成從該參數位置到字串結束位置的子字串。
  • 第11行及第12行分別將字串轉換為小寫及大寫。
  • 第13行及第14行都是置換字串的方法,將第一個參數置換為第二個參數,第13行只會置換第一個符合條件的字串,第14行則會置換所有符合條件的字串。
  • 第15行利用split()將字串依指定參數拆解為Array。

        String的組合很簡單,當我們有兩個String物件時,可以直接用相加的方式將兩者組合起來,如下:

        "測試" + "字串";

        也可以用較進階的StringBuilder達到目的,如下:

        StringBuilder builder = new StringBuilder(); 
        builder.append("測試"); 
        builder.append("字串");

        當然,StringBuilder還提供很多功能,可以協助我們更進一步控制字串的組合,例如:

        StringBuilder builder = new StringBuilder(); 
        builder.append("測試"); 
        builder.append("字串"); 
        builder.insert(2,"ABC"); 
        builder.delete(4,5); 
        builder.reverse(); 
        System.out.println(builder.toString());

        我們除了可以用append()在字串尾端加上文字,也可以用insert()在特定的位置插入文字,或是用delete()刪除特定位置範圍的文字,用reverse()反轉文字順序,最後用toString()把StringBuilder物件轉換為String物件。

        除此之外,還有另外一個和StringBuilder很相似的物件叫做StringBuffer,StringBuffer的用法和StringBuilder幾乎一樣,如下:

      StringBuffer buffer = new StringBuffer(); 
      buffer.append("測試字串"); 
      buffer.insert(2,"ABC"); 
      buffer.delete(2,3); 
      buffer.reverse(); 
      System.out.println(buffer.toString());

        兩者之間的不同處在於StringBuffer是Thread-save的,StringBuilder則不是,Thread的觀念在後面的章節會提到,簡單來說Thread-save就是當多支程式同時存取同一個StringBuffer物件時,不會因此影響到StringBuffer的運作或是造成內容值異常,當然也因此StringBuffer的效率會比StringBuilder來的差。因此在不考慮多執行緒的情況下,可以選用效率較好的StringBuilder,若需要考慮多執行緒,則建議使用StringBuffer以避免不同步的問題造成資料異常。

REF:http://blog.xuite.net/jane17512001/PenguinDesign/116288109-%E5%AD%97%E4%B8%B2%E8%99%95%E7%90%86(String%E3%80%81StringBuilder%E3%80%81StringBuffer)