我有以下字符串
layout: default title: Envy Labs
我要做的是从中创建地图
layout->default title->"envy labs"
这可以使用序列函数吗?还是我必须遍历每一行?
尝试使用正则表达式并使用失败。
(apply hash-map (re-split #": " meta-info))
答案 0 :(得分:4)
user> (let [x "layout: default\ntitle: Envy Labs"]
(reduce (fn [h [_ k v]] (assoc h k v))
{}
(re-seq #"([^:]+): (.+)(\n|$)" x)))
{"title" "Envy Labs", "layout" "default"}
答案 1 :(得分:3)
_是一个变量名,用于表示您不关心变量的值(在这种情况下,是整个匹配的字符串)。
答案 2 :(得分:1)
我建议使用clojure-contrib/duck-streams/read-lines来处理这些行,然后从那里拆分字段。我发现这种方法通常对文件中的错误更加健壮。