Java中獲取子字符串的幾種方法示例
首先假如有這樣一串字符串:
String s = "共 100 頁, 1 2 3 4...";
假如我想把"100"給取出來,該如何做?
方法一: 采用split的方式
System.out.println(s.split(" ")[1]);或者System.out.println(s.split("\\s")[1]);
假如空" "有多個時,可以這樣:
System.out.println(s.split("\\s+")[1]);
注:split是支持正則的,\s在正則中表示空格,+在正則中表示至少1個,即1個或多個,所以\s+表示至少有一個空格
方法二: 采用indexOf的方式
int begin = s.indexOf(" "); int end = s.indexOf(" ", begin+1); System.out.println(s.substring(begin+1, end));
方法三: 正則
封裝好的一個正則類:
public class RegExp { public boolean match(String reg, String str) { return Pattern.matches(reg, str); } public List<String> find(String reg, String str) { Matcher matcher = Pattern.compile(reg).matcher(str); List<String> list = new ArrayList<String>(); while (matcher.find()) { list.add(matcher.group()); } return list; } public String find(String reg, String str, int index) { Matcher matcher = Pattern.compile(reg).matcher(str); if (matcher.find()) { return matcher.group(index); } return null; } public String findString(String reg, String str) { String returnStr = null; List<String> list = this.find(reg, str); if (list.size() != 0) returnStr = list.get(0); return returnStr; } }
RegExp re = new RegExp(); System.out.println(re.findString("\\d+", s)); System.out.println(re.findString("(?<=共).*?\\d+", s).trim());
注:正則中\(zhòng)d表示數(shù)字,(?<=共)是一種預(yù)查模式
方法四: 采用replaceFirst的方式
System.out.println(s.replaceFirst(".*?(\\d+).*", "$1"));
replaceFirst也是支持正則的
注: ?在正則中表示最小匹配模式,$1表示第一個()表示式里面的內(nèi)容。
總結(jié)
以上四種方法中,其中有三種都與正則有關(guān)系,所以,要想玩轉(zhuǎn)字符串的操作,具備一定的正則表示式的能力還是很有必要的!
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
- Java動態(tài)規(guī)劃之編輯距離問題示例代碼
- Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)代碼
- Java矩陣連乘問題(動態(tài)規(guī)劃)算法實例分析
- Java算法之最長公共子序列問題(LCS)實例分析
- Java最長公共子序列示例源碼
- java實現(xiàn)求兩個字符串最長公共子串的方法
- Java字符串中刪除指定子字符串的方法簡介
- Java的字符串中對子字符串的查找方法總結(jié)
- java查找字符串中的包含子字符串的個數(shù)實現(xiàn)代碼
- java實現(xiàn)統(tǒng)計字符串中字符及子字符串個數(shù)的方法示例
- Java基于動態(tài)規(guī)劃法實現(xiàn)求最長公共子序列及最長公共子字符串示例
相關(guān)文章
SpringCloud Hystrix-Dashboard儀表盤的實現(xiàn)
這篇文章主要介紹了SpringCloud Hystrix-Dashboard儀表盤的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Java實現(xiàn)優(yōu)先隊列式廣度優(yōu)先搜索算法的示例代碼
這篇文章主要為大家詳細(xì)介紹了Java如何實現(xiàn)優(yōu)先隊列式廣度優(yōu)先搜索算法,文中通過一個示例帶大家具體了解了實現(xiàn)的方法,需要的可以參考一下2022-08-08解決引用slf4j中Logger.info只打印出文字沒有數(shù)據(jù)的問題
這篇文章主要介紹了解決引用slf4j中Logger.info只打印出文字沒有數(shù)據(jù)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12java多次嵌套循環(huán)查詢數(shù)據(jù)庫導(dǎo)致代碼中數(shù)據(jù)處理慢的解決
這篇文章主要介紹了java多次嵌套循環(huán)查詢數(shù)據(jù)庫導(dǎo)致代碼中數(shù)據(jù)處理慢的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03詳解Java中的do...while循環(huán)語句的使用方法
這篇文章主要介紹了Java中的do...while循環(huán)語句的使用方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10