我有一个包含BB代码的字符串,类似[img="image1"]something[/img]
。我有一个像这样的哈希图:
{:image1 "real_file_name.jpg"}
其中包含真实的图像路径。我想全部替换[img="XXX"]YYY[/img]
为<img src="real_path">.....</img>
因此,我需要找到所有[img=...]
标签,并用哈希图中的相应值替换它们。
我知道如何使用Java和类似语言来执行此操作。我该如何在Clojure中做到这一点?
您可以像使用其他任何语言一样进行操作:使用regexp迭代找到所有需要的图像结构,捕获每个图像的必要部分,然后将其替换为新字符串(将捕获的图像id替换为地图中的相应值):
您可以使用clojure.string/replace
regexp和替换功能,如下所示:
user> (require '[clojure.string :as s])
nil
user> (def input "[img=\"image1\"]something[/img] [img=\"image2\"]something[/img]")
#'user/input
user> (def paths {:image1 "real/path1" :image2 "real/path2"})
#'user/paths
user> (s/replace input #"\[img=\"(.+?)\"\](.*?)\[/img\]"
(fn [[_ img-id content]]
(str "<img src=\"" (paths (keyword img-id)) "\">"
content "</img>")))
"<img src=\"real/path1\">something</img> <img src=\"real/path2\">something</img>"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句