【发布时间】:2016-03-01 19:57:44
【问题描述】:
我只是在处理我使用 Java String.replace 方法的 java 代码之一。因此,在一种情况下测试替换方法时,我计划将垃圾值设为String.replace("","");
在测试中,我遇到了用其他值替换空白值的条件,即 String.replace("","p") 替换了原始字符串所有字符周围的 "p"
例子:
String strSample = "val";
strSample = strSample.replace("","p");
System.out.println(strSample);
输出:
pvpaplp
谁能解释一下为什么会这样?
【问题讨论】:
-
哪一部分让您感到困扰——它取代了“中间”这一事实?还是它取代了不止一个?
-
这是因为
replace使用了正则表达式,并且正则表达式""在4 个位置匹配val:每个字母之前和最后一个字母之后。 -
replace不使用正则表达式,replaceAll使用。 -
@ForguesR 确实如此,
replace(CharSequence, CharSequence)在内部使用replaceAll。 -
@ForguesR replace 不使用正则表达式 syntax,但它使用正则表达式 engine。它只是自动为所有正则表达式元字符添加转义机制。