【Java實用技術】字串的擷取用什麼方法好?
theme: cyanosis highlight: atom-one-dark
【Java實用技術】字串的擷取用什麼方法好?
- 小知識,大挑戰!本文正在參與“程式設計師必備小知識”創作活動。
- 本文同時參與「掘力星計劃」,贏取創作大禮包,挑戰創作激勵金。
必備字串操作
我們將字串操作分為下面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站均有視訊解說,歡迎來玩。如果你覺得這篇文章有用,別忘了點贊+關注,一起進步!
- spring注入靜態變數有幾種方法?春節假期虹貓藍兔三千問
- stream的實用方法和注意事項
- 【Java實用技術】字串的拆分用什麼方法好?有一半程式設計師都掉過split坑
- 【Java實用技術】字串的擷取用什麼方法好?
- 【Java實用技術】java中關於整數的幾個冷知識,總有一個你不知道
- 又是時間格式化問題,詭異的是隻有10月份BUG才出現
- 我決定寫一本Java實用技術,特點實用!實用!還是實用!
- 5 款新型 Linux 命令列工具,實用!
- 5 款新型 Linux 命令列工具,實用!
- Nginx 的 5 大應用場景,太實用了!
- 自定義雙向繫結框架-只需一個註解,簡單實用
- RabbitMQ 延遲佇列,太實用了!
- Spring 中的重試機制,簡單、實用!
- 推薦一款 ES 叢集視覺化工具:Cerebro,簡單、實用!