5

ハイフンでつながれた文字列を CamelCase 文字列に変換しようとしています。この投稿に従いました:ハイフンをキャメル ケースに変換する (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

出力文字列にダッシュが表示されるのはなぜですか?

4

3 に答える 3

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]

ベクトルの最初の要素は一致した文字列で、2 番目の要素はキャプチャされた文字列です。つまりsecond、 ではなくを使用する必要がありますfirst

于 2013-06-16T23:31:42.567 に答える
1

このスレッドに触発されて、あなたもできる

(use 'clojure.string)

(defn camelize [input-string] 
  (let [words (split input-string #"[\s_-]+")] 
    (join "" (cons (lower-case (first words)) (map capitalize (rest words)))))) 
于 2013-06-17T10:30:42.127 に答える