文档章节

java字符串的替换replace、replaceAll、replaceFirst的区别详解

linin630
 linin630
发布于 2015/01/20 11:35
字数 430
阅读 41979
收藏 6
点赞 3
评论 1

如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式!

不多解释,看代码:

String s = "my.test.txt";
System.out.println(s.replace(".", "#"));
System.out.println(s.replaceAll(".", "#"));
System.out.println(s.replaceFirst(".", "#"));

运行结果:

my#test#txt
###########
#y.test.txt

是不是感觉很神奇?

其实懂正则表达式的应该已经发现了,是的,“.”是正则表达式的元字符,匹配除换行符以外的任意字符,所以replaceAll、replaceFirst才出现了这样的结果。

replace没有用到正则表达式,但会把所有“.”替换掉,很多人可能会误解replace是替换单个,而replaceAll是替换全部,其实这是错的(我以前也是这么想的- -)。replace只是没有用到正则表达式,但会替换所有匹配的字符串。

到这里一些不懂正则表达式的小伙伴可能就要喊坑爹了,“那我不想用正则表达式去替换第一个字符串肿么办?”其实也很简单,只要将元字符串转义就行了。

s.replaceFirst("\\.", "#")

运行结果:

my#test.txt

这里给个会被正则表达式识别的字符列表:

.匹配除换行符以外的任意字符

^匹配字符串的开始

$匹配字符串的结束

*重复零次或更多次

+重复一次或更多次

?重复零次或一次

当然,正则可远不止这么点,个人建议花点时间去学习一下比较好~

补充:String的split也是用到了正则表达式,使用的时候注意点哦!

© 著作权归作者所有

共有 人打赏支持
linin630

linin630

粉丝 4
博文 31
码字总数 21850
作品 0
珠海
程序员
加载中

评论(1)

lailaiping
lailaiping
我曾经认为 replace只会替换第一个出现的字符,看来是搞错了,javascript 才是替换第一个出现的字符
java string 字符串替换

i、replace方法 该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如: String s = “abcat”; String s1 = s.replace(...

如风达
2015/07/08
0
1
String字符串替换的一个诡异问题

将字符串中的数字替换成$D 希望将以下字符串中的数字替换为$D字符 引用 ab1cd2 我们知道String有3个用于字符替换的方法,分别是: String replace(CharSequence target, CharSequence repla...

stamen
2015/08/19
0
0
Java中应该注意的一些特殊字符

replace ,replaceAll 两者都是由正则表达式类库实现的,但是 replace 采用的是字符串原有的意思来替换,而replaceAll 则是按照正则表达式的字符串来替换,正则表达式中有 15 个元字符,是有特...

天天顺利
2015/05/05
0
0
Java replace 和 replaceAll

Java String 的replace 和replaceAll 都是用来替换srcString的subString,但是有些不同的是,replace的参数是字符或者字符串,而replaceAll的参数可以是正则表达式。 public String replace ...

Endeavour
2015/08/20
0
0
Java利器——正则表达式详解!

  小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读。   前言   正则表达式是用来处理字符串的一把利器,它是一个专门匹配n个字符串的字符串模板,本质是查找和替换。许多语言...

恒生开发者社区
2017/03/14
0
0
Java反斜线(\)路径与转义字符的小坑

1.图片路径字段ImagePath, 从数据库读出,写到前台变量中, 正常(比如: uploadimage201818802-8517A000800002-1.jpg) 2.由前台向后台提交, getParameter取出则反斜线成了转义符(字符串变为: u...

javado
06/11
0
0
JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇。作者是个正真有功力的人,阅读愉快)   在Sun的Java JDK 1.40版本中...

毛朱
2012/10/25
0
1
JAVA正则表达式(详细,转载内容)

在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。   可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表...

哈全文
2012/04/10
0
0
JAVA正则表达式(详细,转载内容)

在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。   可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表...

TracyZhang
2012/06/25
0
0
string,stringbuffer,stringbuild详解

Java中的字符串处理主要有下面三个类来处理的:String、StringBuffer、StringBuilder。 一、String 1、String简介 初始化: 一般由String声明的字符串,长度是不可变的,这也是它与StringBuf...

mrliuze
2015/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway 接口文档聚合实现

在微服务架构下,通常每个微服务都会使用Swagger来管理我们的接口文档,当微服务越来越多,接口查找管理无形中要浪费我们不少时间,毕竟懒是程序员的美德。 由于swagger2暂时不支持webflux 走...

冷冷gg
13分钟前
9
0
流利阅读笔记30-20180719待学习

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
15分钟前
1
0
OSChina 周五乱弹 —— 我们是食物链的最底层

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @温家成 :分享谢安琪的单曲《姿色份子》 《姿色份子》- 谢安琪 手机党少年们想听歌,请使劲儿戳(这里) @贪吃飒:最近p2p怎么了、半个月爆了...

小小编辑
28分钟前
6
1
Android Studio 3.0 之后打包apk出现应用未安装问题

1、废话 出现这个问题的原因,并不是只有一个,而是有多个原因,不懂的估计会被搞得一头雾水,下面我列举的是我遇到的几种问题和网友遇到的几种问题,但不一定是全部,也有可能有些莫名其妙的...

她叫我小渝
48分钟前
0
0
前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
9
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部