Java截取字符串的幾種方法示例
0 寫在前面
在實(shí)際工作中有一些地方需要用到截取字符串的方法,所以在此記錄下截取字符串的幾種方法。
- .substring()
- StringUtils.substring()
- split()+正則表達(dá)式
1 .substring()
這個(gè)是比較常用的一個(gè)方法。
此方法有兩種形式:
substring(int beginIndex); //提取從索引位置開始至結(jié)尾處的字符串部分 substring(int beginIndex,int endIndex); //提取beginIndex開始到endIndex的字符串部分
實(shí)例代碼:
String str = "你好,Java練習(xí)生"; //substring(int beginIndex); String substring1 = str.substring(3); //substring(int beginIndex,int endIndex); String substring2 = str.substring(3, 7); System.out.println(substring1);//Java練習(xí)生 System.out.println(substring2);//Java
需要注意的是:計(jì)數(shù)從0開始,如果超過了字符串長度則會報(bào)錯(cuò):
java.lang.StringIndexOutOfBoundsException: String index out of range:
計(jì)算位置示意圖
2 split()+正則表達(dá)式
不常用,不過在某些特定場合特別好用。
格式:字符串.split("指定分隔符");
–返回的是一個(gè)數(shù)組
舉例(以英文逗號為分隔符):
String str = "good,good,study,day,day,up"; String[] split = str.split(","); for (String s: split) { System.out.println(s); }
3 StringUtils.substring()
需要在導(dǎo)入StringUtils的工具類。結(jié)合了很多方法。
因?yàn)槊總€(gè)人用的工具類不同所以只記錄一種。
maven導(dǎo)入:
<dependency> <groupId>com.lispcast</groupId> <artifactId>org.apache.commons.lang</artifactId> <version>2.5.0</version> </dependency>
- String substring(String str,int start):避免異常地從指定的String獲取一個(gè)子字符串。
- String substring(String str,int start, int end):可避免異常地從指定的String獲取一個(gè)子字符串。
- String substringAfter(String str,String separator):在第一次出現(xiàn)分隔符后獲取子字符串。
- String substringAfterLast(String str,String separator):在最后一次出現(xiàn)分隔符之后獲取子字符串。
- String substringBefore(String str,String separator):在第一次出現(xiàn)分隔符之前獲取子字符串。
- String substringBeforeLast(String str,String separator):在最后一次出現(xiàn)分隔符之前獲取子字符串。
- String substringBetween(String str,String tag):獲取嵌套在同一String的兩個(gè)實(shí)例之間的String。
- String substringBetween(String str, String open, String close):獲取嵌套在兩個(gè)字符串之間的字符串。
測試:
String str = "大家好,我是練習(xí)兩年半的個(gè)人練習(xí)生,cxk"; //- String substring(String str,int start):避免異常地從指定的String獲取一個(gè)子字符串。 String substring1 = StringUtils.substring(str, 4); //- String substring(String str,int start, int end):可避免異常地從指定的String獲取一個(gè)子字符串。 String substring2 = StringUtils.substring(str, 4, 7); //- String substringAfter(String str,String separator):在第一次出現(xiàn)分隔符后獲取子字符串。 String substringAfter = StringUtils.substringAfter(str, ","); //- String substringAfterLast(String str,String separator):在最后一次出現(xiàn)分隔符之后獲取子字符串。 String substringAfterLast = StringUtils.substringAfterLast(str, ","); //- String substringBefore(String str,String separator):在第一次出現(xiàn)分隔符之前獲取子字符串。 String substringBefore = StringUtils.substringBefore(str, ","); //- String substringBeforeLast(String str,String separator):在最后一次出現(xiàn)分隔符之前獲取子字符串。 String substringBeforeLast = StringUtils.substringBeforeLast(str, ","); //- String substringBetween(String str,String tag):獲取嵌套在同一String的兩個(gè)實(shí)例之間的String。 String substringBetween1 = StringUtils.substringBetween(str, ","); // - String substringBetween(String str, String open, String close):獲取嵌套在兩個(gè)字符串之間的字符串。 String substringBetween2 = StringUtils.substringBetween(str, "好", "的"); System.out.println(substring1); System.out.println(substring2); System.out.println(substringAfter); System.out.println(substringAfterLast); System.out.println(substringBefore); System.out.println(substringBeforeLast); System.out.println(substringBetween1); System.out.println(substringBetween2);
4 寫在最后
注意:substring() 方法是按字符截取,而不是按字節(jié)截取。
工具類沒什么神奇的,都是編寫好的方法直接拿來用的,省事,也可以自行嘗試編寫工具類。
到此這篇關(guān)于Java截取字符串的幾種方法的文章就介紹到這了,更多相關(guān)Java截取字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot超詳細(xì)講解多數(shù)據(jù)源集成
今天分享下SpringBoot多數(shù)據(jù)源集成,我怕麻煩,這里我覺得我的集成也應(yīng)該是最簡單的,清晰明了2022-05-05springboot mybatis-plus實(shí)現(xiàn)登錄接口
本文主要介紹了springboot mybatis-plus實(shí)現(xiàn)登錄接口,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11Java使用自定義注解+反射實(shí)現(xiàn)字典轉(zhuǎn)換代碼實(shí)例
這篇文章主要介紹了Java使用自定義注解+反射實(shí)現(xiàn)字典轉(zhuǎn)換代碼實(shí)例,注解是一種能被添加到j(luò)ava代碼中的元數(shù)據(jù),類、方法、變量、參數(shù)和包都可以用注解來修飾,注解對于它所修飾的代碼并沒有直接的影響,需要的朋友可以參考下2023-09-09MyBatisPlus?大數(shù)據(jù)量查詢慢的問題解決
本文主要介紹了MyBatis?Plus?解決大數(shù)據(jù)量查詢慢問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Spring配置shiro時(shí)自定義Realm中屬性無法使用注解注入的解決辦法
今天小編就為大家分享一篇關(guān)于Spring配置shiro時(shí)自定義Realm中屬性無法使用注解注入的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03Java?實(shí)現(xiàn)使用Comparable按照我們指定的規(guī)則排序
這篇文章主要介紹了Java?如何使用Comparable按照我們指定的規(guī)則排序,通過練習(xí)創(chuàng)建TreeSet集合使用無參構(gòu)造方法,并按照年齡從小到大的順序排序,若年齡相同再按照姓名的字母順序排序展開內(nèi)容,需要的朋友可以參考一下2022-04-04Java Springboot 重要知識點(diǎn)整理匯總
Spring Boot作為微服務(wù)中最好的Java框架,本文主要為大家整理匯總了七個(gè)Spring Boot的重要知識點(diǎn),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-11-11Java常用的八種排序算法及代碼實(shí)現(xiàn)+圖解
這篇文章主要介紹了Java常用的八種排序算法及代碼實(shí)現(xiàn),在Java的時(shí)候,對于排序的應(yīng)用需要熟練的掌握,這樣才能夠確保Java學(xué)習(xí)時(shí)候能夠有扎實(shí)的基礎(chǔ)能力。那Java有哪些排序算法呢?本文小編就來詳細(xì)說說Java經(jīng)典的8種排序算法,需要的朋友可以參考一下2021-12-12SpringCloud?Function?SpEL注入漏洞分析及環(huán)境搭建
SpringCloud 是一套分布式系統(tǒng)的解決方案,常見的還有阿里巴巴的Dubbo,F(xiàn)ass的底層實(shí)現(xiàn)就是函數(shù)式編程,SpringCloud Function 就是Spring提供的分布式函數(shù)式編程組件,下面給大家介紹下SpringCloud?Function?SpEL注入漏洞分析,感興趣的朋友一起看看吧2022-04-04