-1

这个片段打印?!

String str = "";
str = str.replace(new StringBuilder('Z'), new StringBuilder("?!"));
System.out.println(str);    // prints ?! 

怎么来的?
(我在 Win7 上使用 HotSpot x64 VM (25.66-b18) 运行 JSE RTE 1.8.0_66)

4

1 回答 1

0

经过一番挖掘,我终于找到了答案。与resueman

建议的解释相反,测试

"".equals(new StringBuilder('Z'))

返回false,所以我没有“有效地做” "".replace("", "?!")。为了更好地理解我的观点,请注意

"_".replace("", "^")返回^_^。找一分钟来运行这个 LOC,我敢肯定,你会很开心。

这种看似奇怪的行为背后的真正原因是正则表达式引擎匹配空字符串中的边界......

于 2017-03-11T13:56:36.717 回答