2009-09-25 11 views
8

रूबी के स्ट्रिंग के पहले अक्षर को कैपिटल करने के लिए रूबी (रेल के साथ, यदि प्रासंगिक हो) में सबसे अच्छा तरीका क्या है?रूबी PHP के ucfirst() फ़ंक्शन

ध्यान दें कि String#capitalize स्ट्रिंग के पहले अक्षर को कैपिटल करने के अलावा, मैं जो चाहता हूं वह नहीं है, यह फ़ंक्शन अन्य सभी पात्रों को लोअरकेस बनाता है (जो मैं नहीं चाहता - मैं उन्हें छूना छोड़ना चाहता हूं) :

>> "a A".capitalize 
=> "A a" 

उत्तर

15

आप "उप" का उपयोग कर सकते आप क्या चाहते हैं पाने के लिए (ध्यान दें: मैं multibyte तार के साथ इस परीक्षण नहीं किया)

"a A".sub(/^(\w)/) {|s| s.capitalize} 

(और आप पाठ्यक्रम monkeypatch स्ट्रिंग के इस एक विधि है, तो के रूप में जोड़ने के लिए कर सकते हैं आप की तरह)

0

इस पर एक नज़र डालें।

capitalizing-first-letter-of-each-word

वहाँ एक इनबिल्ट समारोह नहीं है। आपको अक्षरों को विभाजित करने और फिर से जुड़ने या रेल की स्ट्रिंग # शीर्षक का प्रयास करने की आवश्यकता है और देखें कि यह वही करता है जो आप चाहते हैं।

14

रेल में आप String#titleize विधि है:

"परीक्षण स्ट्रिंग titleize विधि" .titleize # => "परीक्षण स्ट्रिंग titleize विधि"

+3

बनें पता है कि 'टीआई tleize' अन्य परिवर्तन करता है, जैसे [CamelCase] ​​में एक स्थान डालने (https://en.wikipedia.org/wiki/CamelCase) शब्द। – cjm

6

अपर केस पहले चार, और इसे वापस बचाने स्ट्रिंग

s = "a A" 
s[0] = s[0,1].upcase 
p s # => "A A" 

या,

class String 
    def ucfirst! 
    self[0] = self[0,1].upcase 
    self 
    end 
end 
3

आप मूल स्ट्रिंग को संशोधित नहीं करना चाहती, आप इसे इस तरह से कर सकते हैं में:

class String 
    def ucfirst 
    str = self.clone 
    str[0] = str[0,1].upcase 
    str 
    end 
end 
1

आप PHPs एक असली समान कार्य ucfirst() कोशिश

के लिए देख रहे हैं

परिणामस्वरूप "A A" होगा।

"a neW APPROACH".gsub(/(\w+)/) {|s| s.capitalize} 

परिणामस्वरूप "A New Approach" होगा।

आप के साथ स्ट्रिंग वर्ग का विस्तार कर सकते हैं:

class String 
    def ucfirst 
    self.gsub(/(\w+)/) { |s| s.capitalize } 
    end 

    def ucfirst! 
    self.gsub!(/(\w+)/) { |s| s.capitalize } 
    end 
end 
0

मैं निम्नलिखित समाधान प्रस्तावित, खाली स्थान के

' ucfirstThis'.sub(/\w/, &:capitalize) 
# => "UcfirstThis" 
संबंधित मुद्दे