在 Ruby 中(如果涉及到 Rails),最好的方法是什么来使一个字符串的首字母大写?请注意,String#capitalize
不是我想要的,因为除了将字符串的第一个字母大写之外,这个函数还会将所有其他字符变成小写(我不想要 - 我想保留它们不变):
>> "a A".capitalize
=> "A a"
在 Ruby 中(如果涉及到 Rails),最好的方法是什么来使一个字符串的首字母大写?请注意,String#capitalize
不是我想要的,因为除了将字符串的第一个字母大写之外,这个函数还会将所有其他字符变成小写(我不想要 - 我想保留它们不变):
>> "a A".capitalize
=> "A a"
String#titleize
方法:
"testing string titleize method".titleize #=> "Testing String Titleize Method"
"a A".sub(/^(\w)/) {|s| s.capitalize}
(如果您喜欢,当然可以打猴补 String 来添加这个方法)将首字母大写,并保存回字符串中
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
' ucfirstThis'.sub(/\w/, &:capitalize)
# => "UcfirstThis"
class String
def ucfirst
str = self.clone
str[0] = str[0,1].upcase
str
end
end
"a A".upcase_first
=> "A A"
http://api.rubyonrails.org/v5.1/classes/ActiveSupport/Inflector.html#method-i-upcase_first
ucfirst()
函数,可以尝试使用"a A".gsub(/(\w+)/) {|s| s.capitalize}
将会得到 "A A
"。
"a neW APPROACH".gsub(/(\w+)/) {|s| s.capitalize}
这将导致"一种新的方法
"。
您可以通过以下方式扩展String类:
class String
def ucfirst
self.gsub(/(\w+)/) { |s| s.capitalize }
end
def ucfirst!
self.gsub!(/(\w+)/) { |s| s.capitalize }
end
end
那个一行代码并不依赖于 ActiveSupport。虽然我不确定它是否完全可靠:
"my great uncle and grand-ma".gsub(/(\A\w|\s\w)/) { |m| m.upcase }
# My Great Uncle And Grand-ma
titleize
函数会进行其他更改,例如在CamelCase单词中插入空格。 - cjm