我正在尝试将十六进制格式化为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格式函数似乎并没有代替这些值。我在这里做错了吗?
答案 0 :(得分:5)
%x
做了什么?
查看format source sorce,它仅支持s
,f
,d
,i
和u
:
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))