diff options
-rw-r--r-- | build.xml | 1 | ||||
-rw-r--r-- | src/clj/clojure/string.clj | 5 | ||||
-rw-r--r-- | test/clojure/test_clojure/string.clj | 1 |
3 files changed, 5 insertions, 2 deletions
@@ -111,6 +111,7 @@ <arg value="clojure.java.javadoc"/> <arg value="clojure.java.shell"/> <arg value="clojure.java.browse-ui"/> + <arg value="clojure.string"/> </java> </target> diff --git a/src/clj/clojure/string.clj b/src/clj/clojure/string.clj index 76ac2d6d..dc061631 100644 --- a/src/clj/clojure/string.clj +++ b/src/clj/clojure/string.clj @@ -64,8 +64,9 @@ clojure.string adheres to the following design principles: (cond (instance? Character match) (.replace s ^Character match ^Character replacement) (instance? CharSequence match) (.replace s ^CharSequence match ^CharSequence replacement) - (instance? Pattern match) (if (string? replacement) - (.replaceAll (re-matcher ^Pattern match s) ^CharSequence replacement) + (instance? Pattern match) (if (instance? CharSequence replacement) + (.replaceAll (re-matcher ^Pattern match s) + (.toString replacement)) (replace-by s match replacement)) :else (throw (IllegalArgumentException. (str "Invalid match arg: " match)))))) diff --git a/test/clojure/test_clojure/string.clj b/test/clojure/test_clojure/string.clj index bacaaa7f..ac5f5d1a 100644 --- a/test/clojure/test_clojure/string.clj +++ b/test/clojure/test_clojure/string.clj @@ -81,6 +81,7 @@ "paz" s/reverse ["zap"] "foo:bar" s/replace ["foo-bar" \- \:] "ABC" s/replace ["abc" #"\w" s/upper-case] + "faa" s/replace ["foo" #"o" (StringBuffer. "a")] "baz::quux" s/replace-first ["baz--quux" #"--" "::"] "baz::quux" s/replace-first ["baz--quux" (StringBuffer. "--") (StringBuffer. "::")] "zim-zam" s/replace-first ["zim zam" #" " (StringBuffer. "-")] |