String 的 replaceAll 跟 replaceFirst 用到了正则表达式1
2
3
4
5
6
7
8
9
10
11
public void replaceTest() {
String s = "my-test-txt.my.test.string";
System.out.println(s.replace("-", "#"));
System.out.println(s.replace(".", "$"));
System.out.println(s.replaceAll("-", "@"));
System.out.println(s.replaceAll(".", "*"));
System.out.println(s.replaceFirst(".", "#"));
System.out.println(s.replaceFirst("-", "!"));
System.out.println(s.replaceFirst("\\.", "!"));
}
运行结果1
2
3
4
5
6
7my#test#txt.my.test.string
my-test-txt$my$test$string
my@test@txt.my.test.string
**************************
#y-test-txt.my.test.string
my!test-txt.my.test.string
my-test-txt!my.test.string
关键知识点:
- “.”是正则表达式的元字符,匹配除换行符以外的任意字符。replaceAll、replaceFirst都用到了正则表达式。
- replace没有用到正则表达式。但会把所有目标(即第一个参数)用第二个参数替换掉。
- 很多人可能会误解replace是替换单个,而replaceAll是替换全部,其实这是错的。replace 只是没有用到正则表达式,但会替换所有匹配的字符串。
- 不想用正则表达式去替换第一个“.” 字符串肿么办? s.replaceFirst(“\.”, “!”)
- String 的 split 也用到了正则表达式。