代码之家  ›  专栏  ›  技术社区  ›  Hamza Yerlikaya

Clojure分析字符串

  •  4
  • Hamza Yerlikaya  · 技术社区  · 15 年前

    我有下面的线

    layout: default
    title: Envy Labs
    

    我要做的是从中创建地图

    layout->default 
    title->"envy labs"
    

    这可以使用序列函数吗?还是必须循环遍历每一行?

    尝试让regex使用,但使用失败。

    
    (apply hash-map (re-split #": " meta-info))
    
    3 回复  |  直到 15 年前
        1
  •  4
  •   Brian Carper    15 年前
    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"}
    
        2
  •  3
  •   Jim Downing    15 年前

    _u是一个变量名,用于表示您不关心变量的值(在本例中,是整个匹配字符串)。

        3
  •  1
  •   Timothy Pratley    15 年前

    我建议使用 clojure-contrib/duck-streams/read-lines 要处理这些行,然后从中拆分字段。我发现这个方法对于文件中的错误通常更为健壮。