java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法

展开全部

JAVA中string.replace()和string.replaceAll()的区别及用法乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),32313133353236313431303231363533e59b9ee7ad9431333361313836replaceall替换所有的字符,其实大不然,只是替换的用途不一样。

public String replace(char oldChar,char newChar)

返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。 如 果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,用来表示与此 String 对象表示的字符序列相等的字符序列,除了每个出现的 oldChar 都被一个 newChar 替换之外。

public String replaceAll(String regex,String replacement)使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。此方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果:

Pattern.compile(regex).matcher(str).replaceAll(repl)

参数:

regex - 用来匹配此字符串的正则表达式

返回:得到的 String

抛出: PatternSyntaxException - 如果正则表达式的语法无效。

如果我有以下的字符串:String x= "[kllkklk\\kk\\kllkk]";

要将里面的“kk”替换为++,可以使用两种方法得到相同的结果replace(CharSequencetarget, CharSequencereplacement)  ——x.replace("kk", "++")

replaceAll(Stringregex, Stringreplacement)       ——x.replaceAll("kk", "++")

可见两个函数在处理上述字符串的时候没有什么区别,

下面将字符串中的“\\”替换为“++”System.out.println(x.replace("\\","++"));   //没有问题

System.out.println(x.replaceAll("\\","++"));  //报错java.util.regex.PatternSyntaxException

可见,当使用转义字符进行替换的时候,是有区别的。

replaceAll的参数就是regex,是正则表达式。首先会转义,所以报错。

如果使用System.out.println(x.replaceAll("\\\\","++"));即可完成。

那么在使用普通的字符串替换时,选用哪一个函数呢?String x= "[kllkklk\\kk\\kllkk]";

String tmp;

//System.out.println(x.replace("[", "#").replace("]","#"));

System.out.println(new Date().getTime());

for(int i =0;i<1000000;i++)

tmp=x.replace("kk", "--");

System.out.println(new Date().getTime());

for(int i =0;i<1000000;i++)

tmp=x.replaceAll("kk", "++");

System.out.println(new Date().getTime());

测试结果:

1312424571937

1312424574531

1312424576671

根据测试replaceAll函数要更快一些。看源码发现,replace函数里面仍使用replaceAll函数。

总体原则:

当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数

否则,使用replaceAll函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux之RPM 软件管理程序

RPM RPM是软件管理程序&#xff0c;提供软件的安装、升级、查询、反安装的功能。优点&#xff1a;a、安装方便&#xff0c;软件中所有数据都经过编译和打包b、查询、升级、反安装方便缺点&#xff1a;a、缺乏灵活性b、存在相依属性 用法&#xff1a; rpm 参数 软件包 指令选…

快意人生

仁者不忧&#xff0c; 智者不惑。 勇者不惧&#xff0c; 信者不悔&#xff1b; 锐气藏于胸&#xff0c; 和气浮于面&#xff0c; 才气见于事&#xff0c; 义气施于人&#xff1b; 有为有不为&#xff0c; 知足知不足&#xff01; 转载于:https://www.cnblogs.com/freeton/archi…

DOM Element

特点&#xff1a; 1. nodeType 的值为1. 2. nodeName 的值为元素的标签名(大写); 3. nodeValue 的值为null. 4. parentNode 可能是Element、Text、Comment、ProcessingInstruction、CDATASection、EntityReference。 例&#xff1a; <div id"div1">hha</di…

java filefilter的用法_Java File.listFiles(FileFilter filter)方法

Java Java File.listFiles(FileFilter filter)方法具有以下语法。public File [] listFiles(FileFilter filter)示例在下面的代码显示如何使用File.listFiles(FileFilter filter)方法。import java.io.File;import java.io.FileFilter;public class Main {public static void m…

7-5.11

连接redisr redis.Redis(host118.24.3.40,passwordHK139bc&*,db13,decode_responsesTrue)r.set(lidandan,haha’)发邮件&#xff1a;import yagmaillyagmall.SMTP(user password授权码 host)yagmall(to cc subject contens attachments附件&#xff0c;绝对路径) __ma…

c# 简单序列化

序列化&#xff1a;是将对象状态转换为可保持或传输的格式的过程&#xff0c;原因有两个&#xff0c;第一是想永久的保存这些数据&#xff0c;以便将来可以重建这些数据。第二是想把数据从一个应用程序域发送到另外一个应用程序域中去。反序列化&#xff1a;就是把存储介质中的…

.net WebApi 开发中某些注意事项

目前在做.net开发。 需要开发一套webapi. 这里记录一下某些注意点。 1. 如何开启跨域 如果webapi的用户是域外用户&#xff0c;则需要根据需要开放跨域。 首先安装Install-Package Microsoft.AspNet.WebApi.Cors 在WebApiConfig.cs里开启config.EnableCors(); 可以控制开放的范…

laravel框架中引入Workerman

1.安装Workerman 首先在laravel根目录下安装Workerman 命令:$ composer require workerman/gateway-worker 2.创建 Workerman 启动文件 创建一个 artisan 命令行工具来启动 Socket 服务端&#xff0c;在 app/Console/Commands 目录下建立命令行文件。 <?php namespaceApp\C…

java扫描指定package注解_java随笔-扫描使用指定注解的类与方法

前几天项目中让扫描出所有使用Restful API的方法。刚开始还想着用python过滤关键字来查找的&#xff0c;后来想想可以使用反射来搞的。主要包含以下三个步骤&#xff1a;根据包名解析包的具体路径查找指定包下指定注解的类在上一步骤中得到的类中&#xff0c;依次扫描包含指定注…

windows mobile开发循序渐进(6)windows mobile device center 使用问题

由于个人中邪&#xff0c;在经历一次windows 7安装失败之后&#xff0c;贼心不死&#xff0c;于昨天又重新安装了windows 7&#xff0c;终于成功。 回到windows mobile的开发上来呢&#xff0c;首先是配置环境&#xff0c;按照之前的经验&#xff0c;比较顺利的安装了virtual p…

Python---基础---list(列表)

2019-05-20 一、 # append() 向列表末尾追加新元素 返回值Nonelist1 [1,2,3,4,5]print(id(list1))list1.append(6)print(id(list1)) 二、 #copy() 复制列表list1 [1,2,3,4,5]list2 list1.copy()print(list2)print(id(list1))print(id(list2)) 三、 #count() 计算某个元素…

mysql if selected_初识MySQL

安装下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/​dev.mysql.com双击.msi文件开始安装&#xff0c;采用Custom安装方式。配置安装完毕弹出配置&#xff0c;或者安装路径下bin文件夹下MySQLInstanceConfig.exe运行可以进行配置。采用Detailed Configuration-》…

VisualC++2010系列课程

VisualC2010系列课程&#xff0c; 请访问博客http://blog.csdn.net/yincheng01 &#xff08;基于Visual C2010与windows SDK fo windows7开发Windows 7超级任务栏应用程序http://blog.csdn.net/yincheng01/archive/2009/12/27/5086755.aspx基于Visual C2010与windows SDK fo wi…

【MongoDB学习笔记21】MongoDB的复合索引

索引的值是按照一定顺序排列的&#xff0c;因此使用索引键对文档进行搜索排序比较快&#xff1b;但是只有首先使用索引进行排序时&#xff0c;索引才有用&#xff1b;例如下面的排序里&#xff0c;“username”上的索引就没有起作用&#xff1a;> db.users.find().sort({&qu…

mysql 代理 a_Keepalived+Mysql+Haproxy

#dd dd0 配主从vi /etc/my.cnf[mysqld]server-id 1log-bin mysql-binbinlog-ignore-db mysql,information_schemabinlog_format mixedauto-increment-increment 2auto-increment-offset 1#ddgrant replication slave on *.* to dd192.168.55.% identified by 123456show …

你真的了解Ioc与AOP 吗?(2)

三、基于配置文件和Reflection的工厂模式 为了消除MainApp对其它组件的依赖性&#xff0c;我们引入工厂模式&#xff0c;并且根据配置文件指定的装配规程&#xff0c;利用.net提供的反射技术完成对象的组装工作。本部分代码仅仅提供一种功能演示&#xff0c;如果实际应用仍需进…

DataTime转Varchar

SELECT Convert(varchar(100),A.CreateTime,20) FROM [TB_Business_Award] A 转载于:https://www.cnblogs.com/Anthony518/p/10908263.html

关于一道数据库例题的解析。为什么σ age22 (πS_ID,SCORE (SC) ) 选项是错的?

本人大二学子。近段时间在做数据库复习题的时候遇到一道题&#xff0c;如下。 有关系SC&#xff08;S_ID&#xff0c;C_ID&#xff0c;AGE&#xff0c;SCORE&#xff09;&#xff0c;查找年龄大于22岁的学生的学号和分数&#xff0c;正确的关系代数表达式是&#xff08; &#…

砂.随笔.二十五.如果你是氧气

在跌倒的地方 勇敢站起来 我在这里 在纯真的梦里转载于:https://www.cnblogs.com/aque1984/archive/2010/05/07/1729361.html

java获取表主外键_通过 jdbc 分析数据库中的表结构和主键外键

文章转自&#xff1a;http://ivan4126.blog.163.com/blog/static/20949109220137753214811/在某项目中用到了 hibernate &#xff0c;大家都知道 hibernate 是 ORM 框架&#xff0c;他是有能力根据实体生成数据库表的。我们在单元测试的时候用到了 dbUnit &#xff0c;dbUnit 可…