使用goog.string.format的ClojureScript格式字符串不能替代

时间:2014-07-08 15:35:24

标签: clojure clojurescript google-closure-library

我正在尝试将十六进制格式化为HTML格式,在浏览器中运行ClojureScript。

这是我的“格式”功能。

(defn gen-format [& args] (apply gstring/format args) )

在“strings”命名空间中,我需要goog.string库:

(:require [goog.string :as gstring] [goog.string.format :as gformat])

但是当我尝试从javascript调用它时:

document.write(mypackage.strings.gen_format("#%x%x%x",0,0,0));

它只返回#%x%x%x

它没有崩溃。但是goog格式函数似乎并没有代替这些值。我在这里做错了吗?

1 个答案:

答案 0 :(得分:5)

%x做了什么?

查看format source sorce,它仅支持sfdiu

var formatRe = /%([0\-\ \+]*)(\d+)?(\.(\d+))?([%sfdiu])/g;

这似乎对我有用:

mypackage.strings.gen_format("#%d%d%d", 0, 0, 0)

更新:如果您需要使用颜色呈现字符串,请执行以下操作:

(defn hex-color [& args]
  (apply str "#" (map #(.toString % 16) args))

(defn hex-color [r g b]
  (str "#" (.toString r 16) (.toString g 16) (.toString b 16))