试试看(str (drop 3 "xxxalexandre"))
返回什么:
=> (str (drop 3 "xxxalexandre"))
"clojure.lang.LazySeq@a65bc80b"
由于 drop 返回的是惰性序列,所以 str 的参数是惰性序列,返回的是该惰性序列的 .toString,即对象引用的字符串。
=> (drop 3 "xxxalexandre")
(\a \l \e \x \a \n \d \r \e)
=> (str (lazy-seq `(\a \l \e \x \a \n \d \r \e)))
"clojure.lang.LazySeq@a65bc80b"
用于apply
实现lazy seq并将集合作为多个参数放入str函数中。
=> (apply str (lazy-seq '(\a \l \e \x \a \n \d \r \e)))
"alexandre"
=> (apply str (drop 3 "xxxalexandre"))
"alexandre"
现在您的正则表达式将匹配:
=> (re-seq #"^alex" (apply str (drop 3 "xxxalexandre")))
("alex")