Jij*_*joy 203 java string replace
除了以后使用正则表达式之外,java.lang.String replace()
和replaceAll()
方法之间有什么区别?对于简单的换人一样,代替.
用/
,有什么不同?
emi*_*lan 163
在java.lang.String
,该replace
方法要么采用一对char或一对CharSequence
(其中String是一个子类,所以它很乐意接受一对String).该replace
方法将替换所有出现的char或CharSequence
.在另一方面,这两个String
参数replaceFirst
和replaceAll
正则表达式(正则表达式).使用错误的功能可能会导致细微的错误.
pau*_*sm4 85
问:什么是之间的区别java.lang.String
方法replace()
和replaceAll()
,比后来的使用正则表达式等.
答:只是正则表达式.他们都取代所有 :)
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
PS:
还有一个replaceFirst()
(需要正则表达式)
Sur*_*ran 33
该replace()
方法被重载以接受基元char
和CharSequence
作为参数.
现在就性能而言,该replace()
方法比replaceAll()
后者首先编译正则表达式模式然后在最终替换之前匹配而前者只是匹配提供的参数并替换时快一点.
因为我们知道正则表达式模式匹配是一个稍微复杂一些,因此速度较慢,则宁愿replace()
过replaceAll()
建议只要有可能.
例如,对于您提到的简单替换,最好使用:
replace('.', '\\');
Run Code Online (Sandbox Code Playgroud)
代替:
replaceAll("\\.", "\\\\");
Run Code Online (Sandbox Code Playgroud)
注意:上述转换方法参数与系统有关.
Sur*_*gch 33
无论replace()
和replaceAll()
替换字符串中所有出现.
我总能找到有助于理解差异的例子.
replace()
使用replace()
,如果你只是想更换一些char
与另一个char
或一些String
与另一个String
(实际上CharSequence
).
例1
替换字符出现的所有x
同o
.
String myString = "__x___x___x_x____xx_";
char oldChar = 'x';
char newChar = 'o';
String newString = myString.replace(oldChar, newChar);
// __o___o___o_o____oo_
Run Code Online (Sandbox Code Playgroud)
例2
替换字符串中出现的所有fish
同sheep
.
String myString = "one fish, two fish, three fish";
String target = "fish";
String replacement = "sheep";
String newString = myString.replace(target, replacement);
// one sheep, two sheep, three sheep
Run Code Online (Sandbox Code Playgroud)
replaceAll()
使用replaceAll()
,如果你想使用正则表达式模式.
例3
用一个替换任何数字x
.
String myString = "__1_6____3__6_345____0";
String regex = "\\d";
String replacement = "x";
String newString = myString.replaceAll(regex, replacement);
// __x_x____x__x_xxx____x
Run Code Online (Sandbox Code Playgroud)
例4
删除所有空格.
String myString = " Horse Cow\n\n \r Camel \t\t Sheep \n Goat ";
String regex = "\\s";
String replacement = "";
String newString = myString.replaceAll(regex, replacement);
// HorseCowCamelSheepGoat
Run Code Online (Sandbox Code Playgroud)
文档
replace(char oldChar, char newChar)
replace(CharSequence target, CharSequence replacement)
replaceAll(String regex, String replacement)
replaceFirst(String regex, String replacement)
常用表达
replace() 的工作速度比 replaceAll() 快,这是不正确的,因为两者在其实现中使用相同的代码
Pattern.compile(regex).matcher(this).replaceAll(replacement);
现在的问题是何时使用 replace 以及何时使用 replaceAll()。当您想用另一个子字符串替换一个子字符串而不管它在字符串中出现的位置时,请使用 replace()。但是如果你有一些特殊的偏好或条件,比如只替换字符串开头或结尾的那些子字符串,请使用 replaceAll()。下面是一些例子来证明我的观点:
String str = new String("==qwerty==").replaceAll("^==", "?"); \\str: "?qwerty=="
String str = new String("==qwerty==").replaceAll("==$", "?"); \\str: "==qwerty?"
String str = new String("===qwerty==").replaceAll("(=)+", "?"); \\str: "?qwerty?"
Run Code Online (Sandbox Code Playgroud)