2013-06-16 4 views
5

पर कनवर्ट करें मैं एक हाइफेनेटेड स्ट्रिंग को कैमेलकेस स्ट्रिंग में कनवर्ट करने की कोशिश कर रहा हूं। 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

आप पढ़ने में भूलना क्या प्रतिस्थापन समारोह में इस्तेमाल किया जा रहा था कर सकता है, जावास्क्रिप्ट में सरणी सूचकांक 0 :) पर शुरू –

उत्तर

7

आप second साथ first बदलना चाहिए:

(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))))) 

जब आप इसके बाद के संस्करण कोड चलाने के लिए, परिणाम है: कोड के लिए println डालने से

(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 हो जाता है:

[-g g] 
[-o o] 
[-p p] 

वेक्टर का पहला तत्व मिलान वाली स्ट्रिंग है, और दूसरा कैप्चर स्ट्रिंग है, जिसका अर्थ है कि आपको second का उपयोग करना चाहिए, first नहीं।

4

यदि आपका लक्ष्य केवल मामलों के बीच परिवर्तित करना है, तो मुझे वास्तव में camel-snake-kebab लाइब्रेरी पसंद है। ->CamelCase प्रश्न में कार्य-नाम है।

1

this thread से प्रेरित, आप भी

(use 'clojure.string) 

(defn camelize [input-string] 
    (let [words (split input-string #"[\s_-]+")] 
    (join "" (cons (lower-case (first words)) (map capitalize (rest words)))))) 
संबंधित मुद्दे