首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 字符串截取常用方法與實戰技巧

     編輯:Java 相關知識

核心 API 速查

方法說明示例
substring(int beginIndex)從指定索引截取到末尾"abcdef".substring(2) → "cdef"
substring(int begin, int end)截取 [begin, end) 區間"abcdef".substring(1,4) → "bcd"
indexOf(String str)首次出現位置"a.b.c".indexOf(".") → 1
lastIndexOf(String str)最後一次出現位置"a.b.c".lastIndexOf(".") → 3
split(String regex)正則分割返回數組"a,b,c".split(",") → ["a","b","c"]

實戰場景示例

1. 截取文件名(URL/路徑)

String url = "https://wxj.videocc.net/wxj/images/2014/12/i3jwci4j.jpg";
// 取最後一個 '/' 後的內容
String fileName = url.substring(url.lastIndexOf("/") + 1);
// 結果: i3jwci4j.jpg

2. 截取擴展名

String fileName = "document.pdf";
String ext = fileName.substring(fileName.lastIndexOf(".") + 1);
// 結果: pdf

3. 截取指定字符前/後內容

String str = "user:admin,pass:123456";
// 取第一個 ':' 後到 ',' 前
int colon = str.indexOf(":");
int comma = str.indexOf(",");
String user = str.substring(colon + 1, comma);
// 結果: admin

4. 固定長度截取(如手機號掩碼)

String phone = "13812345678";
String masked = phone.substring(0, 3) + "****" + phone.substring(7);
// 結果: 138****5678

5. 多字符分割處理

String data = "apple,banana;orange|grape";
// 正則分割:逗號、分號、竪線
String[] fruits = data.split("[,;|]");
// 結果: ["apple","banana","orange","grape"]

性能與注意事項

  • 避免循環中調用 substring:舊版 JDK (≤7) 共享字符數組可能導致內存洩漏,JDK 8+ 已優化但仍建議適度使用
  • 邊界檢查:調用前確保索引合法,防止 StringIndexOutOfBoundsException
  • 正則分割轉義:split(".") 需寫成 split("\\."),特殊字符需雙重轉義
  • 大文本處理:超大字符串建議使用 StringBuilder 或流式處理

現代替代方案

Java 11+ 提供更豐富的 API:

// 判斷開頭/結尾
str.startsWith("prefix");
str.endsWith(".txt");

// 去除空白
str.strip(); // JDK 11+, 比 trim() 更完整支持 Unicode

// 重複字符串
"ab".repeat(3); // "ababab"

// 分割為 Stream
Arrays.stream(str.split(",")).map(String::strip).toList();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved