Java 實現(xiàn)repalceAll只替換第二個匹配到的字符串
String replace replaceFirst repaceAll區(qū)別
replace(char oldChar, char newChar)
返回一個新的字符串,它是通過用 newChar 替換此字符串中出現(xiàn)的所有 oldChar 得到的。
replaceAll(String regex, String replacement)
使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串
replaceFirst(String regex, String replacement)
使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。
總結(jié):
replace 替換的是char,replaceAll、replaceFirst替換的可以是字符串,也可以是正則表達式;三者返回的都是一個新的字符串。
例題
需求:將字符串 time:[* TO *] 中第二個*替換為 test
實現(xiàn)代碼
@Test public void replaceSecondStr() { String test = "time:[* TO *]"; String result1 = test.replaceAll("(\\*)(.*?)(\\1)(.*?)", "$1$2test$4"); System.out.println("原字符串:" + test); System.out.println("替換后:" + result1); }
輸出:
原字符串:time:[* TO *]
替換后:time:[* TO test]
總結(jié):
正則中()表示提取匹配的字符串并分組;會分配存儲空間,可以用$1取得匹配到的字符串;
\\1表示與第一個()中匹配的內(nèi)容相同,也可以繼續(xù)寫(\\*);
(.*?)為勉強匹配方式,意思是匹配任何字符。
補充(取出匹配到的字符串)
@Test public void findGroup() { String test = "time:[* TO *]"; Matcher matcher = Pattern.compile("(\\*)(.*?)(\\1)(.*?)").matcher(test); if (matcher.find()) { System.out.println(matcher.group()); } }
補充知識:java字符串的操作:去除字符、替換字符、多個字符分隔字符串
看代碼吧~
// 去除空格,換行,制表符 public String replaceBlank(String str) { String dest = ""; if (str!=null) { Pattern p = Pattern.compile("\\s*|\t|\r|\n"); // 去除多個空格,去除制表符,回車,換行 Matcher m = p.matcher(str); dest = m.replaceAll(""); } return dest; } String s = "你要去除的字符串";
1.去除空格:s = s.replace('\\s','');
2.去除回車:s = s.replace('\n','');
字符串去除多個字符串(括號):
String cal = tableStrings.get(i).replaceAll("\\(|\\)", ""); // 去除左右括號
字符串分隔多個字符:
String[] temp = cal.split("\\+|\\-|\\*|\\/"); // 按照加減乘除字符分隔字符串
以上這篇Java 實現(xiàn)repalceAll只替換第二個匹配到的字符串就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot3.x版本集成log4j遇到Logging?system?failed?to?initial
使用Springboot?3.x集成Log4j時可能會遇到版本沖突的問題,這通??梢酝ㄟ^檢查Maven依賴樹來識別,一旦發(fā)現(xiàn)沖突,將Log4j的版本統(tǒng)一更新到最新的兼容版本,例如2.21.1,即可解決問題,此方法有效解決了日志打印錯誤,是處理類似問題的一個實用參考2024-09-09Springboot+Flowable?快速實現(xiàn)工作流的開發(fā)流程
這篇文章主要介紹了Springboot+Flowable?快速實現(xiàn)工作流的開發(fā)流程,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02Java8的DateTimeFormatter與SimpleDateFormat的區(qū)別詳解
這篇文章主要介紹了Java8的DateTimeFormatter與SimpleDateFormat的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問題及解決
這篇文章主要介紹了關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06java 中多線程生產(chǎn)者消費者問題詳細(xì)介紹
這篇文章主要介紹了java 中多線程生產(chǎn)者消費者問題詳細(xì)介紹的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09