Чтобы изменить массив на месте, я бы использовать each
:
arr = [["aniket", 6], ["shivam", 7], ["tiwari", 8], ["abhijeet", 9]]
arr.each { |word, _| word.capitalize! }
arr #=> [["Aniket", 6], ["Shivam", 7], ["Tiwari", 8], ["Abhijeet", 9]]
_
является заполнителем для неиспользуемая переменная (потому что второй элемент не используется в блоке).
Обратите внимание, что capitalize!
изменит всю строку, то есть "fOO"
станет "Foo"
. Для того, чтобы просто изменить первый символ, вы могли бы использовать upcase
:
arr.each { |word, _| word[0] = word[0].upcase }
Чтобы вернуть новый массив вместо изменения существующего, я бы использовал map
:
arr.map { |word, number| [word.sub(/./, &:upcase), number] }
/./
является регулярным выражение, которое соответствует одному символу. sub
заменяет первое совпадение (т. Е. Первый символ) с возвращаемым значением вызова upcase
(то есть буквой с верхним регистром).
'.titleize' на строке выполнит вашу работу. –
титул не работает –
Что вы думаете? – sawa