標籤:
Java String類中有個方法叫:replaceAll,從表面上看,他的意思是把所有的regex替換成replacement。
1 public String replaceAll(String regex, String replacement) {2 return Pattern.compile(regex).matcher(this).replaceAll(replacement);3 }
但事實上,它並沒有做到:
1 public static void main(String[] args) {2 String str="aaa";3 System.out.println(str.replaceAll("aa", "a"));4 }
結果是:
aa
所以,這個方法是騙人的。
真正的replaceAll應該是這樣的:
1 void replaceAll(String str, String regex, String replacement) {2 if (str.contains(regex)) {3 str = str.replaceAll(regex, replacement);4 replaceAll(str, regex, replacement);5 } else {6 System.out.println(str);7 }8 }
test.java
1 public class test { 2 3 public static void main(String[] args) { 4 String str = "aaattaaaa"; 5 String regex = "aa"; 6 String replacement = "a"; 7 replaceAll(str, regex, replacement); 8 } 9 10 public static void replaceAll(String str, String regex, String replacement) {11 if (str.contains(regex)) {12 str = str.replaceAll(regex, replacement);13 replaceAll(str, regex, replacement);14 } else {15 System.out.println(str);16 }17 }18 }
輸出:
atta
tool:
public static String replaceAll(String str, String regex, String replacement) { if (str.contains(regex)) { str = str.replaceAll(regex, replacement); str=replaceAll(str, regex, replacement); } return str; }
純屬娛樂 :)
【JAVA】"騙人"的“replaceAll”