展开全部

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函数

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

  1. java stringbuffer数组_Java中字符数组、String类、StringBuffer三者之间相互转换

    一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...

  2. java final 函数_JAVA中Final的用法

    1.         修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的PI和E是f ...

  3. java 枚举迭代_Java中的枚举和迭代器之间的区别

    java 枚举迭代 Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs f ...

  4. java 软引用_Java中弱引用和软引用的区别以及虚引用和强引用介绍

    知道弱引用和软引用的概念与如何使用它们是两码事,引用类在垃圾回收工作的过程中有重要作用.我们都知道垃圾回收器会回收符合回收条件的对象的内存,但并不是所有的程序员都知道回收条件取决于指向该对象的引用类型 ...

  5. java addcallback函数_java中怎么使用callback函数?

    UYOU 在很多场景,作为开发都会想到,在执行完毕一个任务的时候,能执行一个callback函数是多么好的事情.现在模拟一下这个情景:定义三个类.分别是主函数类.callback函数的接口类.业务处理 ...

  6. java构造方法函数_Java中的构造方法(构造函数)与普通方法区别

    ** Java中的构造办法(构造函数)与通俗办法差别 ** 一.明白什么是构造办法,什么是通俗办法? 所谓的构造办法,是一种特别的办法,其感化是用来创建对象时初始化对象,即为对象成员变量赋初始值,老是 ...

  7. java math 函数_Java中Math类常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...

  8. java this()函数_java中this关键字的三种用法

    this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针. this的用法在java中大体可以分为3种: 1.普通的直接引用,this相当于是指向当前对象本身. 2.形参与成员名字重 ...

  9. java 对比函数_java中字符串比较函数和操作函数,详细解析

    java编程语言中关于字符的内容也是极其丰富的,所以学习这方面的知识也十分重要的.今天就来为大家介绍一些与java字符串有关的内容,也就是java中字符串比较函数和操作函数,并为大家进行详细的解析,一 ...

最新文章

  1. 卸载受密码保护SEP Norton 11
  2. css3 loading 效果1
  3. JAVA:DOM解析XML和修改XML
  4. Mysql备份策略-完成备份+增量备份shell
  5. VMware ESXI虚拟机及虚拟系统修改MAC地址的方法
  6. elasticsearch使用场景_Elasticsearch功能、适用场景及特点
  7. [2018.08.08 T1] 签到题
  8. 2021最全数学建模比赛时间、含金量、获奖率等数据一览!
  9. 文件下载,搞懂这9种场景就够了
  10. c语言求数组中绝对值最小值,c语言中求绝对值的数学函数
  11. 看懂Azure DevOps燃尽图(Burndown Chart)
  12. 疯狂马斯克:如何带特斯拉走出困境?
  13. 电话号码归属地批量查询软件选择需谨慎
  14. 字节跳动自研万亿级图数据库 图计算实践
  15. 晶振的各种参数代表什么意思?
  16. 最详细PicGo(图床)加阿里云OSS实现图片自动上传
  17. 计算机二级excel服装采购表,计算机二级excel真题:制作采购成本分析表
  18. className和classList区别
  19. 在ThinkPad W500 A98上升级Windows 7以及安装硬件驱动和相关程序
  20. MySQL各数据类型总结

热门文章

  1. 导出数据生成excel
  2. Ubuntu 18.04换国内源
  3. spark、oozie、yarn、hdfs、zookeeper、
  4. abstract class 和 interface 区别
  5. 深入理解 ajax_xhr 对象
  6. Android 布局以及优化资料汇总
  7. (十七)WebGIS中距离及面积测量的原理和实现以及坐标转换的简单介绍
  8. [HTML]去除li前面的小黑点,和ul、LI部分属性
  9. linux_NandFlash_driver_超详细分析 .
  10. Halcon求取矩形顶点坐标