Java 實現repalceAll只替換第二個匹配到的字串
String replace replaceFirst repaceAll區別
replace(char oldChar,char newChar)
返回一個新的字串,它是通過用 newChar 替換此字串中出現的所有 oldChar 得到的。
replaceAll(String regex,String replacement)
使用給定的 replacement 替換此字串所有匹配給定的正則表示式的子字串
replaceFirst(String regex,String replacement)
使用給定的 replacement 替換此字串匹配給定的正則表示式的第一個子字串。
總結:
replace 替換的是char,replaceAll、replaceFirst替換的可以是字串,也可以是正則表示式;三者返回的都是一個新的字串。
例題
需求:將字串 time:[* TO *] 中第二個*替換為 test
實現程式碼
@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]
總結:
正則中()表示提取匹配的字串並分組;會分配儲存空間,可以用$1取得匹配到的字串;
\\1表示與第一個()中匹配的內容相同,也可以繼續寫(\\*);
(.*?)為勉強匹配方式,意思是匹配任何字元。
補充(取出匹配到的字串)
@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 實現repalceAll只替換第二個匹配到的字串就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。