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ù)字,(?<=共)是一種預查模式
方法四: 采用replaceFirst的方式
System.out.println(s.replaceFirst(".*?(\\d+).*", "$1"));
replaceFirst也是支持正則的
注: ?在正則中表示最小匹配模式,$1表示第一個()表示式里面的內容。
總結
以上四種方法中,其中有三種都與正則有關系,所以,要想玩轉字符串的操作,具備一定的正則表示式的能力還是很有必要的!
PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:
JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
- Java動態(tài)規(guī)劃之編輯距離問題示例代碼
- Java動態(tài)規(guī)劃之硬幣找零問題實現(xiàn)代碼
- Java矩陣連乘問題(動態(tài)規(guī)劃)算法實例分析
- Java算法之最長公共子序列問題(LCS)實例分析
- Java最長公共子序列示例源碼
- java實現(xiàn)求兩個字符串最長公共子串的方法
- Java字符串中刪除指定子字符串的方法簡介
- Java的字符串中對子字符串的查找方法總結
- java查找字符串中的包含子字符串的個數(shù)實現(xiàn)代碼
- java實現(xiàn)統(tǒng)計字符串中字符及子字符串個數(shù)的方法示例
- Java基于動態(tài)規(guī)劃法實現(xiàn)求最長公共子序列及最長公共子字符串示例
相關文章
詳解SpringCloud-Alibaba-Seata分布式事務
這篇文章主要介紹了SpringCloud-Alibaba-Seata分布式事務的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
spring如何集成cxf實現(xiàn)webservice接口功能詳解
這篇文章主要給大家介紹了關于spring如何集成cxf實現(xiàn)webservice接口功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家 的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧2018-07-07
解決@RequestMapping和@FeignClient放在同一個接口上遇到的坑
這篇文章主要介紹了解決@RequestMapping和@FeignClient放在同一個接口上遇到的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

