JAVA字符串的替换replace、replaceAll、replaceFirst的区别解析。
String str = "i.like.cat";
System.out.println(str.replace(".", "!"));
System.out.println(str.replaceAll(".", "!"));
System.out.println(str.replaceFirst(".", "!"));
输出结果:

为什么会出现这样的情况?其实知道正则表达式的应该已经发现了,因为“.”是正则表达式的元字符,匹配除换行符以外的任意字符,所以replaceAll、replaceFirst才出现了这样的结果!
而replace没有用到正则表达式,但会把所有“.”替换掉,有很多人可能会误解replace是替换单个,而replaceAll是替换全部,其实这是错的。replace只是没有用到正则表达式,但会替换所有匹配的字符串。
到这里一些不懂正则表达式的小伙伴可能就要喊坑爹了,“那我不想用正则表达式去替换第一个字符串肿么办?”其实也很简单,只要将元字符串转义就行了。
s.replaceFirst("\\.", "#")
输出结果:
贴一些常用的正则表达式识别的字符列表:
. :匹配除换行符以外的任意字符
^ :匹配字符串的开始
$ :匹配字符串的结束
* :重复零次或更多次
+ :重复一次或更多次
? :重复零次或一次
JAVA字符串的替换replace、replaceAll、replaceFirst的区别解析。的更多相关文章
- java字符串的替换replace、replaceAll、replaceFirst的区别
看代码: String s = "my.test.txt"; System.out.println(s.replace(".", "#")) ...
- java字符串的替换replace、replaceAll、replaceFirst的区别详解
如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式! 不多解释,看代码: String s = "my.te ...
- Java字符串的替换(replace()、replaceFirst()和replaceAll())
在 Java 中,String 类提供了 3 种字符串替换方法,分别是 replace().replaceFirst() 和 replaceAll(),本文将详细介绍它们的使用方法. replace( ...
- java字符串的替换
split也是用到了正则表达式 replace 是没有用正则表达式,全部替换 replaceAll 和replaceFirst是用了正则表达式 replaceAll替换所有,replaceFirst是 ...
- 字符串正则替换replace第二个参数是函数的问题
按照JS高程的说法,如下 replace()方法的第二个参数也可以是一个函数.在只有一个匹配项(即与模式匹配的字符串)的情况下,会向这个函数传递3个参数:模式的匹配项.模式匹配项在字符串中的位置和原始 ...
- java多次替换(replace不行)
import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static vo ...
- 字符串正则替换replace第二个参数是函数
zepto中 //将字符串转成驼峰式的格式 camelize = function (str) { return str.replace(/-+(.)?/g, function (match, chr ...
- js |竖线字符串全部替换 replace
一般人解决方案: 'a|b|c'.replace(/\|/g, ','); 神经病解决方案: 'a|b|c'.split('|').join(',');
- Python replace() 和 re.sub() 字符串字符替换
Python replace() 和 re.sub() 字符串字符替换 replace() testStr = 'aa:bb[cc' testStr.replace(':','_') 每次只能替换一个 ...
随机推荐
- Windows10系统,截图黑屏,怎么办?
问题:Windows10系统,截图黑屏,怎么办? 图片描述: 原因:也许有 媒体播放软件和系统(或者正在使用的截图软件)起了冲突. 我就开了个这个软件,就完蛋了. 导致了 系统自带的 这两个截图 ...
- 题解 P1201 【[USACO1.1]贪婪的送礼者Greedy Gift Givers】
这一题挺简单的,但是如果是纯模拟的话.会十分麻烦 这里介绍一个\(STL\)映射\(map\) \(map\)的最大优点是可以使用任意数据类型作为数组的下标 \(map\)的定义形式为 map< ...
- 修改alpine Linux的Docker容器的时区
适用对象 使用 Alpine Linux 发行版的 Docker 镜像容器. 仅仅适用于没有安装uclibc的系统. 修改步骤 进入容器命令行 # docker exec -it container_ ...
- Day14_RabbitMQ及数据同步
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...
- matplotlib基础汇总_02
设置plot的风格和样式 点和线的样式 颜色 参数color或c 五种定义颜色值的方式 别名 color='r' 合法的HTML颜色名 color = 'red' HTML十六进制字符串 color ...
- MOSFET 的 I / V 特性曲线
https://www.cnblogs.com/yeungchie/ MOSFET 线性区(三极管区,\(V_{DS} \leq V_{GS} - V_{TH}\)) \[I_{D} = \mu_{n ...
- 牛客IOI周赛17-提高组 卷积 生成函数 多项式求逆 数列通项公式
LINK:卷积 思考的时候 非常的片面 导致这道题没有推出来. 虽然想到了设生成函数 G(x)表示最后的答案的普通型生成函数 不过忘了化简 GG. 容易推出 \(G(x)=\frac{F(x)}{1- ...
- 使用idea maven打包项目 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources
超级折磨人 在网上搜到的解决方案: 技术交流群 : 816227112 修改 和 <plugin> <groupId>org.apache.maven.plugins</ ...
- win10搭建基于docker的odoo开发环境
- Golang | Go语言多态的实现与interface使用
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第11篇文章,我们一起来聊聊golang当中多态的这个话题. 如果大家系统的学过C++.Java等语言以及面向对象的 ...