前言:
今天大概来讲一下replace replaceAll replaceFirst这三者的区别。
replace replaceAll replaceFirst相同点:
- 1.都用于字符串的替换。
replace replaceAll replaceFirst不同点:
- 1.replace的参数是char和CharSequence(图一) ,replaceAll 的参数是regex(图三)
- 2. replaceAll支持正则表达式,因此会对参数进行解析(两个参数均是),如replaceAll("\\d", "*"),而replace则不会,replace("\\d","*")就是替换"\\d"的字符串,而不会解析为正则。
- 3.替换第一次出现的字符串用 replaceFirst
replace
(图一)
replaceAll
(图三)
例子1:
package com.test.nodefault;
/**
* @Author tanghh
* 测试replace replaceAll replaceFirst
* @Date 2020/2/24 9:13
*/
public class Test2 {
public static void main(String[]args){
String c = "test#aa#txt";
String c1 = c.replace("#","|");
String c2 = c.replaceAll("#","|");
String c3 = c.replaceFirst("#","|");
System.out.println("c1-------"+c1+"------------c2-------"+c2+"-----"+"---c3-------"+c3);
System.out.println("------------------------------------------------------");
String b = "test.aa.txt";
String b1 = b.replace(".","|");
String b2 = b.replaceAll(".","|");
String b3 = b.replaceFirst(".","|");
System.out.println("b1-------"+b1);
System.out.println("b2-------"+b2);
System.out.println("b3-------"+b3);
}
}
效果图1:
例子1总结:
- 1. 这么一看过去,b2的值应该是test|aa|txt 。 但是“.”是正则表达式的元字符,匹配除换行符以外的任意字符,所以replaceAll、replaceFirst才出现了这样的结果。而replace是正常的。
- 正则表达式可以再复习一下: https://www.runoob.com/regexp/regexp-syntax.html
例子2:
下面这个例子:字符串的替换发现值没有替换掉这是为什么呢?
查看源代码发现: 返回替换方法返回的是一个新字符串,需要用变量重新接收一下。