下面的代码将设置在哪里如下面的代码将其设置为“测试”为什么replaceFirst和replaceAll会给出不同的结果?
String str = "test".replaceFirst("(.*)$","$1s");
我本来期望这两个操作以产生相同的结果STR为“testss”
String str = "test".replaceAll("(.*)$","$1s");
。有人可以解释为什么replaceAll会在字符串的末尾添加额外的s吗?
下面的代码将设置在哪里如下面的代码将其设置为“测试”为什么replaceFirst和replaceAll会给出不同的结果?
String str = "test".replaceFirst("(.*)$","$1s");
我本来期望这两个操作以产生相同的结果STR为“testss”
String str = "test".replaceAll("(.*)$","$1s");
。有人可以解释为什么replaceAll会在字符串的末尾添加额外的s吗?
这是因为"(.*)$"
从"test"
,"test"
和空字符串(“”)中捕获两个字符串。所以replaceAll会添加两个"s"
。
谢谢。你说“空串”,你指的是哪一个? – cgTag
@MathewFoscarini'[测试] []'< - 第二次捕获是“空字符串” – 2012-10-18 05:37:44
试着做这个'“(。* $)”',你会得到什么? – epascarello
用'“[$ 1]”'代替 - 这应该提供一些提示:) – 2012-10-18 05:33:51
hmm ...(。* $)没有帮助,但[$ 1]给了我“[test] s [] s”。所以有一个空的捕获。为什么? – cgTag