我正在尝试在浏览器中运行 ClojureScript,以十六进制格式设置颜色以在 HTML 中使用。
这是我的“格式”函数。
(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 format 函数似乎没有替换其中的值。我在这里做错了什么吗?
最佳答案
%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))
关于ClojureScript 格式字符串与 goog.string.format 不能替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635974/