Ruby中的最佳方式是什麼(使用Rails,如果相關的話)將字符串的首字母大寫?Ruby的等價於PHP的ucfirst()函數
請注意,String#capitalize
是不是我想要的,除了大寫字母的第一個字母,此功能使所有其他字符小寫(我不想 - 我想讓它們保持原樣) :
>> "a A".capitalize
=> "A a"
Ruby中的最佳方式是什麼(使用Rails,如果相關的話)將字符串的首字母大寫?Ruby的等價於PHP的ucfirst()函數
請注意,String#capitalize
是不是我想要的,除了大寫字母的第一個字母,此功能使所有其他字符小寫(我不想 - 我想讓它們保持原樣) :
>> "a A".capitalize
=> "A a"
你可以用「子」得到你想要的東西(注:我還沒有和多字節字符串測試這個)
"a A".sub(/^(\w)/) {|s| s.capitalize}
(你當然可以猴補丁字符串添加這個猶如方法你喜歡)
看一看這一點。
capitalizing-first-letter-of-each-word
這裏沒有一個內置功能。你需要拆分這些字母並重新加入,或者試試Rails的String#titleize,看看它是否做到了你想要的。
在Rails你有String#titleize
方法:
「測試串titleize法」 .titleize#=> 「測試管柱titleize法」
大寫的第一個字符,並保存它放回串
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
如果你不想修改原始字符串,你可以這樣來做:
class String
def ucfirst
str = self.clone
str[0] = str[0,1].upcase
str
end
end
如果你正在尋找一個真正的類似功能,PHP的ucfirst()
嘗試
"a A".gsub(/(\w+)/) {|s| s.capitalize}
將導致「A A
」。
"a neW APPROACH".gsub(/(\w+)/) {|s| s.capitalize}
將導致「A New Approach
」。
可以擴展String類有:
class String
def ucfirst
self.gsub(/(\w+)/) { |s| s.capitalize }
end
def ucfirst!
self.gsub!(/(\w+)/) { |s| s.capitalize }
end
end
我提出以下解決方案,致力於通過空白
' ucfirstThis'.sub(/\w/, &:capitalize)
# => "UcfirstThis"
由於導軌5:
"a A".upcase_first
=> "A A"
http://api.rubyonrails.org/v5.1/classes/ActiveSupport/Inflector.html#method-i-upcase_first
要意識到'ti tleize'進行其他更改,例如在[CamelCase](https://en.wikipedia.org/wiki/CamelCase)文字中插入空格。 – cjm 2013-08-08 16:35:14