java 字符串替换 replace与replaceAll
replace与replaceAll方法都是用来替换字符串的。
首先,我们先比较一下这两种函数的性能:
示例:
public class StringReplaceEmp{
public static void main(String args[]){
String str="Hello World";
String newStr;
long startTime = System.currentTimeMillis();
for(int i = 0;i<50000;i++){
newStr = str.replace("H","W"); //将Hello中的H替换为W
}
long endTime = System.currentTimeMillis();
System.out.println("replace函数所花的时间:"+(endTime-startTime)+"毫秒");
long startTime1 = System.currentTimeMillis();
for(int i = 0;i<50000;i++){
newStr = str.replace("H","W");
}
long endTime1 = System.currentTimeMillis();
System.out.println("replaceAll函数所花的时间:"+(endTime1-startTime1)+"毫秒");
}
}结果:
replace函数所花的时间:21毫秒
replaceAll函数所花的时间:7毫秒
注释:System.currentTimeMillis() 是指获取当前时间的毫秒数,自1970年1月1日0时起至当前时间的毫秒数。
经过测试,说明replaceAll比replace执行速度是要快的。
然后我们测试一下有转义字符的替换:
replace:
public class StringReplaceEmp{
public static void main(String args[]){
String str="Hello\World";
String newStr;
newStr = str.replace("\","++");
System.out.println(newStr);
}
}结果:Hello++WorldreplaceAll:
public class StringReplaceEmp{
public static void main(String args[]){
String str="Hello\World";
String newStr;
newStr = str.replaceAll("\","++");
System.out.println(newStr);
}
}结果:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.compile(Pattern.java:1671)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at java.lang.String.replaceAll(String.java:2162)
at file.main(file.java:5)
但如果将"\"改为"\\"就不会报错了。
public class StringReplaceEmp{
public static void main(String args[]){
String str="Hello\World";
String newStr;
newStr = str.replaceAll("\\","++");
System.out.println(newStr);
}
}结果:Hello++World总结:如果是一般的没有转义字符的建议使用replaceAll函数来替换字符串。
若是有转义字符还是使用replace函数。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: js 获取表单数据
- 下一篇:没有了
