我需要阅读1. california
字符串1. California
。在我看来,正确的方法是剥离1.
,String#capitalize
,然后重新添加1.
,但我无法弄明白。
答案 0 :(得分:3)
而不是strip(删除前导,尾随字符),split字符串两部分并将单词部分大写,然后join:
num, word = '1. california'.split(nil, 2) # split into two parts.
# => ["1.", "california"]
[num, word.capitalize].join(' ')
# => "1. California"
num, word = '2. los angeles'.split(nil, 2) # split into two parts.
# => ["2.", "los angeles"]
[num, word.capitalize].join(' ')
# => "2. Los angeles"
或使用正则表达式(String#sub
):
"1. california".sub(/[a-z]/i, &:upcase)
# => "1. California"
"2. los angeles".sub(/[a-z]/i, &:upcase)
# => "2. Los angeles"
<强>更新强>
如果你想大写所有单词:
"2. los angeles".split.map(&:capitalize).join(' ')
# => "2. Los Angeles"
"2. los angeles".gsub(/\b[a-z]/i, &:upcase) # gsub with modified regex.
# => "2. Los Angeles"
答案 1 :(得分:2)
您可以使用split
方法。将字符串拆分为两部分,如下所示
str = '1. california'.split
然后使用join
和 capitalize
方法再次加入,如下所示:
[str[0],str[1].capitalize].join(' ')
答案 2 :(得分:1)
s = "1. california"
s.split.map(&:capitalize).join(" ") #=> 1.California
s2 = "2. los angeles"
s2.split.map(&:capitalize).join(" ") #=> 2. Los Angeles
答案 3 :(得分:0)
"1. california".split(" ").first + " " + "1. california".split(" ").last.capitalize`
答案 4 :(得分:0)
这是一个正则表达式版本:
a = '1. california'
first_letter = /[[:alpha:]]/
a[first_letter] = a[first_letter].upcase
答案 5 :(得分:0)
您可以从以下内容中获取一些想法 1。)
str = "2. los angeles"
array = []
str.split(nil).each{|i| array << i.capitalize}
array.join(" ")
==> "2. Los Angeles"
2。)
str = "2. los angeles"
str.split(nil).collect(&:capitalize).join(" ")
==> "2. Los Angeles"