java字符串的replace和replaceAll

        replace和replaceAll,是字符串替换的两个方法,返回值为替换后的字符串,假设现在有个字符串变量str="abcda",现在有如下代码片段:

str.replace("a", "A"); 
str.replaceAll("a", "A");

        如果单单看这两个方法的名字来臆测结果的话,很容易就产生这样一个结果:

replace替换后的结果是:Abcda,而replaceAll替换后的结果是:AbcdA,all嘛,自然比不带all的替换的多一点,然后实际的结果是什么呢?

两者的结果都是:AbcdA。那么该如何理解这两个方法的区别呢?首先,可以从两个方法的定义来入手:

public String replace(oldChar, newChar); 
public String replaceAll(regex, replacement);

已经显而易见了。

区别:

        replace和replaceAll的第一个参数是不一样的,replace的第一个参数只能是字符或者字符串,而replaceAll的第一个参数是作为正则表达式来被方法解析的。

共同点:

        两者返回值都是最终被替换后的字符串。

        两者都是全部替换,并不存在谁替换多少的问题,两个方法不具有可比性。

典型案例:

package com.sms.service.impl;


public class ConfigServiceImpl {
	public static void main(String[] args) {
		String userDir=System.getProperty("user.dir"); 
		System.out.println(userDir);//结果:D:\workspace3\aaaa
		String  replaceUserDir=userDir.replace("\\", "/");
		System.out.println(replaceUserDir);//结果:D:/workspace3/aaaa
		String replaceAllUserDir=userDir.replaceAll("\\\\", "/");
		System.out.println(replaceAllUserDir);//结果:D:/workspace3/aaaa
	}
}

运行结果如注释所示:

D:\workspace3\aaaa
D:/workspace3/aaaa
D:/workspace3/aaaa

代码说明:

        为什么replaceAll的第一个参数是"\\\\",首先“\”在正则表达式里面是转义字符,我们要想在java代码里面使用这个"\"转义字符,需要这样写:"\\",其次,要替换的是userDir这个字符串里面的"\",而在java代码里面要正确书写这样的符号,也要通过"\"来转义。所以总共四个"\\\\",从左往右说,第一个是java语法,表示转义它后边的字符,第二个是正则表达式里面的转义字符,被第一个"\"转义,第三个的意思和第一个一样,第四个表示被第三个转义的字符。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值