下面的代碼將設置在哪裏如下面的代碼將其設置爲「測試」爲什麼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