Ruby的等价于PHP的ucfirst()函数
问题描述:
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