我正在尝试对每个单词的起始字母进行首字母化。这是我的意见:
[["Aniket", 6], ["Shivam", 7], ["Tiwari", 8], ["Abhijeet", 9]]
我需要输出:
DataSet
我如何实现这一目标?
答案 0 :(得分:4)
你可以试试这个 -
[["aniket", 6], ["shivam", 7], ["tiwari", 8], ["abhijeet", 9]].select {|arr| arr[0].capitalize!}
答案 1 :(得分:4)
你需要遍历外部和内部数组,构造另一个数字大写:
output.map{|e| [e[0].capitalize, e[1]]}
output
是你的数组。
答案 2 :(得分:4)
要就地更改数组,我会使用each
:
arr = [["aniket", 6], ["shivam", 7], ["tiwari", 8], ["abhijeet", 9]]
arr.each { |word, _| word.capitalize! }
arr #=> [["Aniket", 6], ["Shivam", 7], ["Tiwari", 8], ["Abhijeet", 9]]
_
是未使用变量的占位符(因为块中未使用第2个元素)。
请注意,capitalize!
会更改整个字符串,即"fOO"
将变为"Foo"
。要更改第一个字符,您可以使用upcase
:
arr.each { |word, _| word[0] = word[0].upcase }
要返回新数组而不是更改现有数组,我会使用map
:
arr.map { |word, number| [word.sub(/./, &:upcase), number] }
/./
是一个匹配单个字符的正则表达式。 sub
将第一个匹配(即第一个字符)替换为调用upcase
的返回值(即大写字母)。
答案 3 :(得分:2)
另外,您可以在块中传递第一个和第二个数组元素:
output.map {|f, s| [f.capitalize, s] }