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++World
replaceAll:
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 获取表单数据
- 下一篇:没有了