我正在尝试将带连字符的字符串转换为CamelCase字符串。我关注了这篇文章:Convert hyphens to camel case (camelCase)
(defn hyphenated-name-to-camel-case-name [^String method-name]
(clojure.string/replace method-name #"-(\w)"
#(clojure.string/upper-case (first %1))))
(hyphenated-name-to-camel-case-name "do-get-or-post")
==> do-Get-Or-Post
为什么我还在输出字符串?
答案 0 :(得分:7)
您应该将first
替换为second
:
(defn hyphenated-name-to-camel-case-name [^String method-name]
(clojure.string/replace method-name #"-(\w)"
#(clojure.string/upper-case (second %1))))
您可以通过将clojure.string/upper-case
插入代码来检查println
获得的参数:
(defn hyphenated-name-to-camel-case-name [^String method-name]
(clojure.string/replace method-name #"-(\w)"
#(clojure.string/upper-case
(do
(println %1)
(first %1)))))
运行上面的代码时,结果是:
[-g g]
[-o o]
[-p p]
向量的第一个元素是匹配的字符串,第二个元素是捕获的字符串,
这意味着您应该使用second
,而不是first
。
答案 1 :(得分:4)
如果您的目标仅仅是在案例之间进行转换,我真的很喜欢camel-snake-kebab库。 ->CamelCase
是有问题的函数名称。
答案 2 :(得分:1)
(use 'clojure.string)
(defn camelize [input-string]
(let [words (split input-string #"[\s_-]+")]
(join "" (cons (lower-case (first words)) (map capitalize (rest words))))))