Java 字符串截取及常見(jiàn)場(chǎng)景與方法詳解
Java 字符串截取詳解:常見(jiàn)場(chǎng)景與方法
在 Java 開(kāi)發(fā)中,截取字符串是一個(gè)非常常見(jiàn)的操作,無(wú)論是獲取文件名還是提取某些特定內(nèi)容。本文詳細(xì)介紹了截取字符串最后一位及其他常見(jiàn)截取操作的多種方法,幫助開(kāi)發(fā)者快速上手。
1. 截取字符串最后一位
1.1 用 substring() 截取
substring()
是最常用的字符串截取方法,支持通過(guò)索引位置獲取部分字符串。理論格式如下:
String result = str.substring(str.lastIndexOf("\\") + 1);
注意:當(dāng)涉及特殊字符(如反斜杠 \
)時(shí),需要用 \\
進(jìn)行轉(zhuǎn)義。
示例:
public class Test { public static void main(String[] args) { String fileName = "E:/eclipse_workspace1/FtpOperateFile/logs/IYinXin.log"; String newFileName = fileName.substring(fileName.lastIndexOf("/") + 1); System.out.println("最后一個(gè)文件名為=====>" + newFileName); } }
輸出結(jié)果:最后一個(gè)文件名為=====>IYinXin.log
1.2 用 split() 截取
split()
方法可以根據(jù)指定的分隔符對(duì)字符串進(jìn)行切割,返回一個(gè)字符串?dāng)?shù)組。
注意:當(dāng)使用特殊字符(如 /
或 .
)作為分隔符時(shí),需要用 \\
轉(zhuǎn)義。
示例:
public class Test { public static void main(String[] args) { String fileName = "E:/eclipse_workspace1/FtpOperateFile/logs/IYinXin.log"; // 使用 / 進(jìn)行切割 String[] splitFileName = fileName.split("\\/"); // 獲取最后一個(gè)文件名 String lastName = splitFileName[splitFileName.length - 1]; System.out.println("最后一個(gè)文件名是=====>" + lastName); } }
輸出結(jié)果:最后一個(gè)文件名是=====>IYinXin.log
1.3 Windows 下目錄的特殊處理
在 Windows 系統(tǒng)中,路徑分隔符通常為反斜杠 \
,需要注意轉(zhuǎn)義。以下是一個(gè)示例:
public class Test { public static void main(String[] args) { String filePath = "C:\\Program Files\\Java\\jdk-17\\bin\\java.exe"; String fileName = filePath.substring(filePath.lastIndexOf("\\") + 1); System.out.println("文件名是=====>" + fileName); } }
輸出結(jié)果:文件名是=====>java.exe
1.4 Linux 下目錄的特殊處理
Linux 系統(tǒng)中的路徑分隔符是正斜杠 /
,因此處理起來(lái)相對(duì)簡(jiǎn)單。例如:
public class Test { public static void main(String[] args) { String filePath = "/usr/local/bin/java"; String fileName = filePath.substring(filePath.lastIndexOf("/") + 1); System.out.println("文件名是=====>" + fileName); } }
輸出結(jié)果:文件名是=====>java
2. 截取字符串的常見(jiàn)方法
2.1 常用方法
Java 提供了以下兩種常見(jiàn)的字符串截取方法:
split()
:根據(jù)分隔符拆分字符串,返回字符串?dāng)?shù)組。substring()
:根據(jù)索引截取字符串。
2.2 方法介紹與應(yīng)用示例
方法一:split()
1. 使用一個(gè)參數(shù):split(String regex)
根據(jù)給定的正則表達(dá)式拆分字符串。注意,正則表達(dá)式可能會(huì)帶來(lái)性能損耗。
示例:
String str = "AB@CD"; String[] parts = str.split("@"); for (String part : parts) { System.out.println(part); }
輸出結(jié)果:
AB
CD
2. 使用兩個(gè)參數(shù):split(String regex, int limit)
根據(jù)分隔符和分割次數(shù)來(lái)拆分字符串。
示例:
String str = "HelloWorld@qq@com"; String[] parts = str.split("@", 2); for (String part : parts) { System.out.println(part); }
輸出結(jié)果:
HelloWorld
qq@com
方法二:substring()
1. 單參數(shù):substring(int beginIndex)
從指定索引開(kāi)始截取到字符串末尾。
示例:
String sb = "HelloWorld@qq.com"; String result = sb.substring(5); System.out.println(result);
輸出結(jié)果:World@qq.com
2. 雙參數(shù):substring(int beginIndex, int endIndex)
從指定的起始索引截取到結(jié)束索引(不包含結(jié)束索引對(duì)應(yīng)的字符)。
示例:
String sb = "HelloWorld@qq.com"; String result = sb.substring(0, 5); System.out.println(result);
輸出結(jié)果:Hello
3. 根據(jù)特定字符截取
可以通過(guò) indexOf()
方法獲取特定字符的位置,從而靈活截取字符串。
示例:
String sb = "HelloWorld@qq.com"; String result = sb.substring(0, sb.indexOf("@")); System.out.println(result);
輸出結(jié)果:HelloWorld
總結(jié)
方法 | 適用場(chǎng)景 | 返回類型 | 注意事項(xiàng) |
---|---|---|---|
split() | 按特定字符或正則表達(dá)式拆分字符串 | 字符串?dāng)?shù)組 | 正則性能可能會(huì)受影響 |
substring() | 根據(jù)索引截取部分字符串或處理路徑 | 字符串 | 小心索引越界 |
不同方法適用于不同場(chǎng)景。例如:
- 需要簡(jiǎn)單拆分時(shí),用
split()
更直觀。 - 處理路徑或特定字符截取時(shí),
substring()
更靈活高效。
通過(guò)靈活組合這些方法,能快速解決日常開(kāi)發(fā)中的字符串處理問(wèn)題!
到此這篇關(guān)于Java 字符串截取詳解:常見(jiàn)場(chǎng)景與方法的文章就介紹到這了,更多相關(guān)Java 字符串截取內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring集成httpclient配置的詳細(xì)過(guò)程
spring框架是一個(gè)非常強(qiáng)大的框架這里就不多說(shuō)了,那么主要是介紹spring與httpclient的整合集成過(guò)程,感興趣的朋友跟隨小編一起看看吧2021-07-07spring batch 讀取多個(gè)文件數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)示例
本篇文章主要介紹了spring batch 讀取多個(gè)文件數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03Java管道流實(shí)現(xiàn)線程間通信過(guò)程解析
這篇文章主要介紹了Java管道流實(shí)現(xiàn)線程間通信過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03關(guān)于Java的二叉樹(shù)、紅黑樹(shù)、B+樹(shù)詳解
這篇文章主要介紹了關(guān)于Java的二叉樹(shù)、紅黑樹(shù)、B+樹(shù)詳解,能同時(shí)具備數(shù)組查找快的優(yōu)點(diǎn)以及鏈表插入和刪除快的優(yōu)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)就是樹(shù),需要的朋友可以參考下2023-05-05mybatis教程之增刪改查_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了mybatis教程之增刪改查,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09IDEA2022搭建Spring?Cloud多模塊項(xiàng)目的詳細(xì)過(guò)程
這篇文章主要介紹了IDEA2022搭建Spring?Cloud多模塊項(xiàng)目,網(wǎng)上有很多教程父模塊都是通過(guò)maven的方式創(chuàng)建的,然后子模塊是通過(guò)Spring?Initalizr方式創(chuàng)建,這種方式父模塊無(wú)法管理子模塊的依賴仲裁,需要每個(gè)子模塊自行管理,就失去了父模塊的用處了2022-10-10解決SpringMVC、tomcat、Intellij idea、ajax中文亂碼問(wèn)題
這篇文章主要介紹了解決SpringMVC、tomcat、Intellij idea、ajax中文亂碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09java模擬實(shí)現(xiàn)銀行ATM機(jī)操作
這篇文章主要為大家詳細(xì)介紹了java模擬實(shí)現(xiàn)銀行ATM機(jī)操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05