【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站均有視頻解説,歡迎來玩。

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