summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clj/clojure/string.clj11
-rw-r--r--test/clojure/test_clojure/string.clj5
2 files changed, 12 insertions, 4 deletions
diff --git a/src/clj/clojure/string.clj b/src/clj/clojure/string.clj
index e1ef3796..a4e77415 100644
--- a/src/clj/clojure/string.clj
+++ b/src/clj/clojure/string.clj
@@ -10,7 +10,8 @@
:author "Stuart Sierra"}
clojure.string
(:refer-clojure :exclude (replace reverse))
- (:import (java.util.regex Pattern)))
+ (:import (java.util.regex Pattern)
+ clojure.lang.LazilyPersistentVector))
(defn ^String reverse
"Returns s with its characters reversed."
@@ -123,10 +124,12 @@
(defn split
"Splits string on a regular expression. Optional argument limit is
- the maximum number of splits."
+ the maximum number of splits. Not lazy. Returns vector of the splits."
{:added "1.2"}
- ([^Pattern re ^String s] (seq (.split re s)))
- ([^Pattern re limit ^String s] (seq (.split re s limit))))
+ ([^String s ^Pattern re]
+ (LazilyPersistentVector/createOwning (.split re s)))
+ ([ ^String s ^Pattern re limit]
+ (LazilyPersistentVector/createOwning (.split re s limit))))
(defn ^String trim
"Removes whitespace from both ends of string."
diff --git a/test/clojure/test_clojure/string.clj b/test/clojure/test_clojure/string.clj
index 8ee7cdee..d1996c7c 100644
--- a/test/clojure/test_clojure/string.clj
+++ b/test/clojure/test_clojure/string.clj
@@ -2,6 +2,11 @@
(:require [clojure.string :as s])
(:use clojure.test))
+(deftest t-split
+ (is (= ["a" "b"] (s/split "a-b" #"-")))
+ (is (= ["a" "b-c"] (s/split "a-b-c" #"-" 2)))
+ (is (vector? (s/split "abc" #"-"))))
+
(deftest t-reverse
(is (= "tab" (s/reverse "bat"))))