浅谈java中replace和replaceAll的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈java中replace和replaceAll的区别相关的知识,希望对你有一定的参考价值。
1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串); \r\n2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号; \r\n\r\n 相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用 replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串; \r\n 另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作; \r\n 还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的. \r\n\r\n举例如下: \r\n \r\n String src = new String("ab43a2c43d"); \r\n\r\n System.out.println(src.replace("3","f"));=>ab4f2c4fd. \r\n System.out.println(src.replace('3','f'));=>ab4f2c4fd. \r\n System.out.println(src.replaceAll("\\d","f"));=>abffafcffd. \r\n System.out.println(src.replaceAll("a","f"));=>fb43fc23d. \r\n System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d \r\n System.out.println(src.replaceFirst("4","h"));=>abh32c43d. 参考技术A replace是用新的字符串替换老的字符串;replaceAll是用新的字符串替换 用正则表达式相匹配字符串。。。 参考技术B 是哪个对象的方法或属性呢。。。。。。。。。。
~~~~~~
~~
~~~~~~~
~~~~~~~~~~~
~~~~~
~~~~~~~~~
~
~~~~
replace 和 replaceAll 的区别
replace 和 replaceAll 都是Java 中常用的替换字符串的方法
replace :
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
replaceAll:
public String replaceAll(String regex, String replacement) {
}
区别: 参数不同,replace 的参数是char 和CharSequence(字符串序列) ,即可以支持字符的替换,也支持字符串的替换,而replaceAll 的参数是regex,即基于正则表达式的替换,比如可以通过replaceAll("d","*") 把一个字符串中的所有数字字符替换为星号
相同点: 都是全部替换, 如果只想替换第一次出现的可以使用replaceFirest() ,这个方法也是基于正则表达式的替换, 但与replaceAll 不同的是, 只替换第一次出现的字符串
还需要注意的一点是执行了替换之后源字符串是没有发生改变的
1、常用元字符
. | 表示除了换行符之外任意一个字符 |
\\s | 空格字符(空格键、tab、换行、回车) |
\\S | 非空格字符([^\\s]) |
\\d | 一个数字,(相当于[0-9]) |
\\D | 一个非数字的字符,(相当于[^0-9]) |
\\w | 一个单次字符(word character)(相当于[a-zA-Z0-9]还有下划线) |
^ | 一行的开始 |
$ | 一行的结尾 |
\\b | 一个单词的边界 |
\\B | 一个非单词的边界 |
[] | 匹配方括号内的一个字符,例如:[abc]表示字符a,b,c中的任意一个(与a|b|c相同) |
[^x] | 匹配除了x 以外的任意字符 |
[^aeiou] | 匹配除了aeiou 这几个字母以外的任意字符 |
2、表示次数的元字符(限定符)
* | 重复零次或更多次 |
例如:a*匹配零个或者多个a | |
+ | 重复一次或更多次 |
例如:a+匹配一个或者多个a | |
? | 重复零次或一次 |
例如:a?匹配零个或者一个a | |
{n} | 重复n次 |
例如:a{4}匹配4个a | |
{n,} | 重复n次或更多次 |
例如:a{4,}匹配至少4个a | |
{n,m} | 重复n到m次 |
例如:a{4,10}匹配4-10个a |
3、正则表达式定位符
^
^hell
|
定位符规定匹配模式必须出现在目标字符串开头 |
hello、hellboy | |
$
ar$
|
定位符规定匹配模式必须出现在目标字符串结尾 |
car、bar | |
\\b
\\bbom、man\\b
|
定位符规定匹配模式必须出现在目标字符串开头或结尾两个边界之一 |
bomb、human/woman | |
\\B
\\Bjava\\B
|
定位符规定匹配模式必须出现在目标字符串开头和结尾两边界之内 |
ForjavaEJB |
4、常用正则表达式
1、中文字符的匹配
正则表达式支持Unicode码,汉字范围可使用Unicode来表示
·[\\u4E00-\\u9FA5]汉字
·[\\uFE30-\\uFFA0]全角字符
·[^\\x00-\\xff]匹配双字节字符(包括汉字在内)
详细了解正则表达式可以查看博客 https://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
以上是关于浅谈java中replace和replaceAll的区别的主要内容,如果未能解决你的问题,请参考以下文章
Java 中的 replace() 和 replaceAll()