【Java實用技術】字串的擷取用什麼方法好?

語言: CN / TW / HK

theme: cyanosis highlight: atom-one-dark


【Java實用技術】字串的擷取用什麼方法好?

必備字串操作

我們將字串操作分為下面6種:

  1. 基本操作方法
  2. 字串判空、比較
  3. 字串擷取和拆分
  4. 字串查詢和替換
  5. 字串和其他型別資料的轉換
  6. 字串拼接和格式化

今天我們來講解第三節。

字串擷取和拆分

對於字串擷取的原生操作

java //原生方法: public String.substring(int beginIndex, int endIndex)

問題: 你能記得擷取的部分包含開始索引還是包含結束索引?

如果你不能第一時間回答這個問題,說明你對原生方法使用不熟悉,在開發時候,你可能會查閱jdk文件,或者寫測試方法驗證。

這在日常開發中會浪費一定時間。

答案: 結果中包含beginIndex,但是不包含endIndex

原生方法使用限制: 使用前要判空,記住開始和結束索引是否包含在結果內。

特別麻煩的是,如果你要擷取指定分割符之間的部分,需要再使用indexOf()方法獲得索引,作為開始索引記得要加1。

程式碼如下:

java String ss = "java_pandas.jpg"; if (ss != null) {     String s1 = ss.substring(ss.indexOf("_") + 1, ss.indexOf(".")); }

推薦字串擷取操作

Apache工具類StringUtils.substringXX()

優勢: 不用擔心字串為null(空),方法名直白。

推薦常用方法:

java // 擷取字串2個字元中間的字串 public static String substringBetween(String str, String open, String close) // 擷取指定分割符後面的部分 public static String substringAfterLast (String str, String separator) // 擷取指定分割符前面的部分 public static String substringBeforeLast (String str, String separator)

對於substringBetween方法,結果就是不包含開始和結束分割符的部分,這也很符合一般的操作思維。

對於上面提到的一個擷取特定分割符之間的部分,可以一行程式碼搞定。

java String ss = "java_pandas.jpg"; String s2 = StringUtils.substringBetween(ss, "_", ".");

開發中比較常見的需求是擷取某個特定分割符之間的字串,又或者是擷取特定分割符前(後)的字串。

這些在工具類中直接呼叫,比自己寫方法要方便很多。

demo用例

```java import org.apache.commons.lang3.StringUtils;

/*  * Java實用技術手冊 By Pandas。  *  * @author Pandas  * @date 2021/10/7  / public class StringSub {

/*      * 擷取字串方法用哪個?      /     public static void main(String[] args) {         String ss = "java_pandas.jpg";

System.out.println(" String原生substring方法 ");         // 對下劃線和句號之間內容擷取         if (ss != null) {             String s1 = ss.substring(ss.indexOf("_") + 1, ss.indexOf("."));             System.out.println(s1);         }

System.out.println(" StringUtils 方法 **");         String s2 = StringUtils.substringBetween(ss, "_", ".");         System.out.println(s2);         // 獲取檔案字尾名         String postfix = StringUtils.substringAfterLast(ss, ".");         String fileName = StringUtils.substringBeforeLast(ss, ".");         System.out.println("檔名:" + fileName);         System.out.println("檔案字尾:" + postfix);

} }

/ 執行結果===>  String原生substring方法  pandas  StringUtils 方法 *** pandas 檔名:java_pandas 檔案字尾:jpg / ```

總結

非必要情況下不要使用原生的substring方法,請直接使用StringUtils.substringXX()

是不是感覺前2期都比較簡單?現在是熱身操作,後面會有更復雜的高階技巧等著你。

歡迎閱讀本期內容,希望對新入行的你有幫助。

我是Pandas,專注Java程式設計實用技術分享,公眾號Java實用技術手冊和B站均有視訊解說,歡迎來玩。

如果你覺得這篇文章有用,別忘了點贊+關注,一起進步!