java.lang.String的replace()和replaceAll()方法有什么区别? 除了以后使用正则表达式?对于简单的替换,比如替换。用/, 有什么区别吗?
当前回答
String replace(char oldChar, char newChar)
返回一个新字符串,结果是将该字符串中所有出现的oldChar替换为newChar。
String replaceAll(String regex, String replacement
用给定的替换替换此字符串中与给定正则表达式匹配的每个子字符串。
其他回答
. lang。String, replace方法要么取一对char's,要么取一对CharSequence's (String是其中的一个子类,所以它很乐意取一对String's)。replace方法将替换所有出现的char或CharSequence。另一方面,replaceFirst和replaceAll的第一个String参数是正则表达式(regex)。使用错误的函数可能会导致微妙的错误。
正如在wickeD的回答中提到的,使用replaceAll替换字符串在replace和replaceAll之间的处理方式是不同的。我期望[3]和[4]具有相同的值,但它们不同。
public static void main(String[] args) {
String[] a = new String[5];
a[0] = "\\";
a[1] = "X";
a[2] = a[0] + a[1];
a[3] = a[1].replaceAll("X", a[0] + "X");
a[4] = a[1].replace("X", a[0] + "X");
for (String s : a) {
System.out.println(s + "\t" + s.length());
}
}
它的输出是:
\ 1
X 1
\X 2
X 1
\X 2
这与perl不同,在perl中替换不需要额外的转义级别:
#!/bin/perl
$esc = "\\";
$s = "X";
$s =~ s/X/${esc}X/;
print "$s " . length($s) . "\n";
的打印 \ X 2
这可能非常麻烦,因为当尝试使用java.sql.DatabaseMetaData.getSearchStringEscape()与replaceAll()一起返回的值时。
replace适用于char数据类型,而replaceAll适用于String数据类型,两者都将第一个实参替换为第二个实参。
String replace(char oldChar, char newChar)
返回一个新字符串,结果是将该字符串中所有出现的oldChar替换为newChar。
String replaceAll(String regex, String replacement
用给定的替换替换此字符串中与给定正则表达式匹配的每个子字符串。
replace()方法不使用正则表达式模式而replaceAll()方法使用正则表达式模式。因此replace()比replaceAll()执行得更快。
推荐文章
- 如何在POM.xml中引用环境变量?
- 如何在android中复制一个文件?
- 将整数转换为字符串,以逗号表示千
- 将JavaScript字符串中的多个空格替换为单个空格
- 接口方法的最终参数-有什么意义?
- Java中的@UniqueConstraint注释
- printf()和puts()在C语言中的区别是什么?
- 如何在清洁模式下运行eclipse ?如果我们这样做会发生什么?
- 获取java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory异常
- Java中的正则表达式命名组
- c#和Java的主要区别是什么?
- 什么是NullPointerException,我如何修复它?
- 在Java中使用“final”修饰符
- 无法在Flutter上找到捆绑的Java版本
- 如何在Kotlin解析JSON ?