Replace和ReplaceAll的区别

先澄清几个误区

1、CharSequence 不是 Char :有些小朋友根据参数的类型选择Replace或ReplaceAll方法

2、Replace 和 ReplaceAll :并不是有些小朋友想象的Replace只替代一个出现的字符,ReplaceAll 替换所有字符

3、循环替换的误区

		String eventJson = ".............";
		Iterator<Entry<String, String>> itPro = map.entrySet().iterator();
		while (itPro.hasNext()) {
			Entry<String, String> entry = itPro.next();
			eventJson.replace(entry.getKey(), entry.getValue());
		}
		System.out.println(eventJson);

上面伪代码并不能得到你想要的结果。

eventJson.replace(entry.getKey(), entry.getValue());
需要替换成
eventJson = eventJson.replace(entry.getKey(), entry.getValue());

不耐烦的同学现在一定急着想知道两者的区别呢,现在开始讲解:

你可以去看看两个方法的定义:

String java.lang.String.replace(CharSequence target, CharSequence replacement)

Replaces each substring of this string that matches the literal target sequence with the specified literal replacement sequence. The replacement proceeds from the beginning of the string to the end, for example,
replacing "aa" with "b" in the string "aaa" will result in "ba" rather than "ab".

Parameters:

target The sequence of char values to be replaced

replacement The replacement sequence of char values

Returns:

The resulting string

Throws:

NullPointerException - iftarget orreplacement is null.

Since:

1.5

String java.lang.String.replaceAll(String regex, String replacement)

Replaces each substring of this string that matches the given regular expression with the given replacement. An invocation of this method of the form str.replaceAll(regex, repl) yields exactly the same result as
the expression java.util.regex.Pattern.compile(regex).matcher(str).replaceAll(repl)Note that backslashes (\) and dollar signs ($) in the replacement string may cause the results to be different than if it were being treated as a literal replacement string;
see Matcher.replaceAll. Use java.util.regex.Matcher.quoteReplacement to suppress the special meaning of these characters, if desired.Parameters:regex the regular expression to which this string is to be matchedreplacement the string to be substituted for each
matchReturns:The resulting StringThrows:PatternSyntaxException - if the regular expression‘s syntax is invalidSince:1.4See Also:[email protected]

一目了然!

String.Replace 主要是针对字符串的替换。

String.ReplaceAll 主要是用正则表达式的子字符串进行替换。

我们做个测试看看!

		System.out.println("1234567890abcdef".replace("12345", "ABCDE"));
		System.out.println("1234567890abcdef".replaceAll("12345", "ABCDE"));
		System.out.println("[email protected]#$%^&*()-=Abcd".replace("#$%^&", "OK"));
		System.out.println("[email protected]#$%^&*()-=Abcd".replaceAll("#$%^&", "OK"));

执行结果!

ABCDE67890abcdef
ABCDE67890abcdef
[email protected]*()-=Abcd
[email protected]#$%^&*()-=Abcd

明显最后一行替换失败了,因为有正则表达式字符!

追求性能的同学一定会问这两个方法谁快,这个就留个好奇的你了,呵呵...

这边没时间做大量的测试给你求证了,但是给出不严谨的个人猜想如下:

Replace比ReplaceAll性能略好。

但是有正则匹配的时候你肯定选用ReplaceAll了。

希望有时间的同学提供性能方面的比较哦!谢谢!

Replace和ReplaceAll的区别

时间: 2024-12-24 02:28:46

Replace和ReplaceAll的区别的相关文章

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

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

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.toStri

JAVA中REPLACE和REPLACEALL的区别(转)

replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串); 2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号; 相同点是都是全部替换,即把源字符串中的某一字

Java中replace和replaceall的区别

1>replace的参数是char和CharSequence,既可以支持字符替换,也可以支持字符串替换. 2>replaceall参数是regex, replacement,regex表示是正则表达式. String str = "wel2come3Souhe";  String str1 = str.replace("e", "E");  String str3 = str.replace('e', 'E');  System.ou

replace与replaceAll的区别

这两者有些人很容易搞混,因此我在这里详细讲述下. replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串): replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号: 相同点:都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串: 不同点

String对象中的replace和replaceAll的区别?

replace方法:支持字符和字符串的替换. public String replace(char oldChar, char newChar) public String replace(CharSequence target, CharSequence replacement) replaceAll方法:基于正则表达式的字符串替换. public String replaceAll(String regex, String replacement) 测试代码: String str = "H

JAVA中替换字符的方法replace和replaceAll 区别

replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;相同点是都是全部替换,即把源字符串中的某一字符或字符

java replace和replaceAll

replace和replaceAll是JAVA中常用的替换字符的方法 public String replace(char oldChar, char newChar)         在字符串中用newChar字符替代oldChar字符,返回一个新的字符串 public String replaceAll(String regex,String replacement)使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串. 区别: 1)replace的参数是

Java replace 和 replaceAll

Java String 的replace 和replaceAll 都是用来替换srcString的subString,但是有些不同的是,replace的参数是字符或者字符串,而replaceAll的参数可以是正则表达式. public String replace (Char old,Char newChar) {     (oldChar != newChar) {         len = .i = -[] val = (++i < len) {             (val[i] =