如何修剪,大写和重新添加修剪过的角色?

时间:2014-02-10 09:03:13

标签: ruby

我需要阅读1. california字符串1. California。在我看来,正确的方法是剥离1.String#capitalize,然后重新添加1.,但我无法弄明白。

6 个答案:

答案 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"