【发布时间】:2020-02-16 00:52:38
【问题描述】:
当子字符串被星号包围时,我需要替换空格的字符:
(def my-line "Lorem ipsum dolor, *consetetur*, invidunt ut *labore et dolore magna aliquyam* erat")
(clojure.string/replace my-line #"\*(.*?)\*" " ")
但我的代码很笨,设置了静态数量的空格,我需要用空格替换相同数量的字符:
consetetur = 9 spaces
labore et dolore magna aliquyam = 31
【问题讨论】:
-
你不能用正则表达式来做到这一点。您需要检查匹配项并“手动”创建包含空格的字符串。
-
clojure.string/replace允许最后一个参数是您编写的函数,它获取有关匹配的信息,并计算作为替换的返回值。例如(clojure.string/replace my-line #"\*(.*?)\*" (fn [match-info] (str (count (match-info 1))))) => "Lorem ipsum dolor, 10, invidunt ut 31 erat" -
我认为如果你给出一个你期望的完整输出的例子,你所要求的会更清楚,例如""Lorem ipsum dolor, 10, invidunt ut 31 erat"
标签: clojure clojurescript