Java使⽤replaceAll()⽅法替换字符串中的(“.“)点号
场景:把字符串2020.04.28中的(.)点号全都换成(-)横线。
代码⽰例
/**
* 测试类
* @author shixiangcheng
* 2020-04-28
*/
public class Test {
public static void main(String [] args){
//原始字符串
java replace方法String sourceStr="2020.04.28";
//将点号全部替换为横线
String placeAll(".","-");
//打印输出
System.out.println(targetStr);
}
}
输出结果如下:
----------
这个结果真是让⼈始料未及。仔细分析发现:
replaceAll的参数是regex,即基于正则表达式的替换,⽐如:可以通过replaceAll("\d", “")把⼀个字符
串所有的数字字符都换成星号;replace的参数是char和CharSequence,即可以⽀持字符的替换,也⽀持字符串的替换(CharSequence即字符串序列的意思,说⽩了也就是字符串);
相同点:都是全部替换,即把源字符串中的某⼀字符或字符串全部换成指定的字符或字符串;
不同点:replaceAll⽀持正则表达式,因此会对参数进⾏解析(两个参数均是),如replaceAll("\d", "”),⽽replace则不
会,replace("\d","*")就是替换"\d"的字符串,⽽不会解析为正则。
另外还有⼀个不同点:“\”在java中是⼀个转义字符,所以需要⽤两个代表⼀个。例如System.out.println( “\” ) ;只打印出⼀个""。但是“\”也是正则表达式中的转义字符,需要⽤两个代表⼀个。所以:\\被java转换成\,\⼜被正则表达式转换成\,因此⽤replaceAll替
换“\”为"\",就要⽤replaceAll("\\","\\\\"),⽽replace则replace("\","\\")。
点号(.)在正则表达式⾥代表任意字符,所以会将源字符串中的所有字符替换,.所以要表⽰.要⽤\.
修改后代码如下:
/**
* 测试类
* @author shixiangcheng
* 2020-04-28
*/
public class Test {
public static void main(String [] args){
//原始字符串
String sourceStr="2020.04.28";
//将点号全部替换为横线
String placeAll("\\.","-");
//打印输出
System.out.println(targetStr);
}
}
运⾏结果如下
2020-04-28
如果只想替换第⼀次出现的,可以使⽤replaceFirst(),这个⽅法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第⼀次出现的字符串。
欢迎⼤家积极留⾔交流学习⼼得,点赞的⼈最美丽,谢谢

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。