java字符串的替换replace无效,字符串的replace与replaceAll
00-1010字符串替换replace,replaceAll,replaceFirst区别不大。请参见代码replaceAll,replaceFirst。需要注意的问题类型定义如下。如果我们这样写,我实现了这两个方法,你可以直接引用。
00-1010如果不是刚刚复习了正则表达式,我可能不会注意到原来的字符串replaceAll和replaceFirst使用了正则表达式!
目录
String s= my . test . txt ;System.out.println(s.replace( . , #));system . out . println(s . replace all( . , #));system . out . println(s . replace first( . , #));运行结果:
my # test # txt # # # # # # # # # # # y . test . txt
是不是感觉很神奇?
其实懂正则表达式的人应该已经发现了。是的,“”是正则表达式的元字符,它匹配除换行符之外的任何字符。这就是为什么replaceAll和replaceFirst会有这样的结果。
而replace不使用正则表达式,但是会replaceAll“.”很多人可能会误解,replace是替换单个,replace all是替换全部。其实这是不对的(我以前也是这么想的-)。Replace只是不使用正则表达式,但是会替换所有匹配的字符串。
在这里,一些不懂正则表达式的朋友可能会大叫:“如果我不想用正则表达式替换第一个字符串怎么办?”其实很简单,对元字符串进行转义即可。
S.replaceFirst(\ . , # )运行结果:
my#test.txt
这里给个会被正则表达式识别的字符列表:
.匹配除换行符以外的任何字符匹配字符串的开头$匹配字符串的结尾*重复零次或多次重复一次或多次?重复它零次或一次。当然,规律性远不止于此。个人建议还是花点时间学学比较好~
补充:s split也使用正则表达式,所以使用时要小心!
00-1010昨天系统报错,无组6,上网查询,说是replaceAll()的问题,于是具体测试了一下,发现如果不注意的话,会出现隐式错误。
java String类的replaceAll方法是一个常用方法,
00-1010 String replace all(String regex,string replacement)有两个参数。第一个是被替换的字符串,是正则表达式,另一个是被替换的字符串。
字符串的替换replace、replaceAll、replaceFirst区别
uploaded filename . replace all(,/);//用/代替//没有错,用好正则表达式可以实现很强的功能,比如:
str.replaceAll((?i) oldStr,newStr);//忽略大小写;但是在使用中,一定要记住,不仅第一个参数是正则表达式,第二个也是。因此,如果这两个参数是可变的,我们应该注意参数的内容。一份文件说,他们应该在所有[/$。?* () {}符号前面是/符号。经过我的测试(jdk1.4),只有/和$容易出错。
比如:
System.out.println(/)。replaceFirst(/,//);系统将报告:
Java . lang . stringindexoutofboundsexception :字符串索引超出范围: 1
System.out.println(/)。replaceFirst(/, x//);系统将报告:
Java . lang . stringindexoutofboundsexception :字符串索引超出范围: 2
System.out.println(/)。replaceFirst(/,//X );执行结果是x。
System.out.println(/)。replaceFirst(/, $ 6 );执行结果引发异常:
Java . lang . indexoutofboundsexception : No group 6
因此,如果参数是变量并且可能包含/或$,建议不要使用replaceAll和replaceFirst方法。
不多解释,看代码
/** *吕底亚、吕底亚、吕底亚、吕底亚int n=0;而(我!=1){ str=str。substr(0,I)newstr字符串。substr(I旧字符串。length());i=str.indexOf(oldStr,the newstr。length());n个;}返回str} /** *子母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母母. * @ param str * *参数oldStr * *参数旧字符串* *参数new str * @ param newstr * *参数新字符串* @ return * *静态公共字符串优先替换(字符串str、字符串旧海峡,字符串new tr){ int I=str。(旧字符串)的索引;如果(I==1)返回strstr=str。substring,I)newstr str。substr(I旧字符串。length());返回str}系统。出去。println(字符串工具。全部替换(“/”、“/”、/“/”);朱庇荫/
苏亚南、苏亚南、苏亚南、苏亚南、苏亚南、苏亚南、苏亚南、苏亚南。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。