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

如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来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只是没有用到正则表达式,但会替换所有匹配的字符串。

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


1

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

运行结果:


1

my#test.txt

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

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

^匹配字符串的开始

$匹配字符串的结束

*重复零次或更多次

+重复一次或更多次

?重复零次或一次

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

原文地址:https://www.cnblogs.com/huifeidezhuzai/p/10883522.html

时间: 2024-10-16 06:36:57

java字符串的替换replace、replaceAll、replaceFirst的区别的相关文章

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

如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式! 不多解释,看代码: 1 2 3 4 String s = "my.test.txt"; System.out.println(s.replace(".", "#")); System.out.println(s.replaceAll(".", "#")); System.o

Java字符串替换函数replace、replaceFirst、replaceAll

一.replace(String old,String new) 功能:将字符串中的所有old子字符串替换成new字符串 示例 String s="Hollow world!"; System.out.println(s); System.out.println(s.replace("o", "#")); /* * 结果:Hollow world! * H#ll#w w#rld! */ 二.replaceAll(String arg0, Stri

java中String字符串的替换函数:replace与replaceAll的区别

例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSequence target, CharSequence replacement)       ——          x.replace("kk", "++") replaceAll(String regex, String replacement)       —— 

【java解惑】java字符串替换方法使用

    如下代码: public class Example020 { public static void main(String[] args) { String separator = File.separator; String clazzName = Example020.class.getName(); String rs1 = clazzName.replace(".", separator); // 方法1 String rs2 = clazzName.replaceA

Java replace & replaceAll

Java字符串中需要对一些字符进行替换,用到最多的是replace和replaceAll两个方法.这两个方法在使用的时候需要注意: replace: public String replace (CharSequence target, CharSequence replacement) Added in API level 1 Returns a copy of this string after replacing occurrences of target replaced with re

【Java】字符串模板替换

原文:[Java]字符串模板替换 源代码下载地址:http://www.zuidaima.com/share/1593989887085568.htm 自己封装的工具类中的一个小方法. String str = "大象说它会{0}死,蚂蚁说它会{0}死"; template(str,"胖", "瘦"); 输出: 大象说它会胖死,蚂蚁说它会瘦死 代码请下载. 可以用一些模板语言实现,不过这个代码很好的诠释了模板的机制,赞一个. 参考如下代码: 自己

C#自定义字符串替换Replace方法实例

本文实例讲述了C#自定义字符串替换Replace方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 前一阵遇到一个如标题的算法题,是将原有字符串的某些片段替换成指定的新字符串片段,例如将源字符串:abcdeabcdfbcdefg中的cde替换成12345,得到结果字符串:ab12345abcdfb12345fg,即:abcdeabcdfbcdefg -> ab12345abcdfb12345fg. 二.实现方法: 显然不能用string.Replace方法,需要自定义一个方法 strin

Python3字符串替换replace(),translate(),re.sub()

Python3的字符串替换,这里总结了三个函数,replace()和translate()和re.sub() replace() replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次 str.replace(old, new[, max]) a = 'Hello,world. ByeBye!' print(a.replace('l','Q')) print(a.replace('abcdefghi','01234

python 替换字符串的方法replace()、正则re.sub()

一.replace()函数1用字符串本身的replace方法: a = 'hello word' b = a.replace('word','python') print b 1 2 3 二.re.sub() import re a = 'hello word' strinfo = re.compile('word') b = strinfo.sub('python',a) print b 原文地址:https://www.cnblogs.com/jfdwd/p/11457986.html