Я хочу, чтобы преобразовать имя "JOHN DOE-SMITH", чтобы "John Doe-Смит" с помощью кода:назначение рубин внутри итератора
name = "JOHN DOE-SMITH"
name_split = name.split(/\s/)
name_split.each do |x|
if x =~ /-/
name1, name2 = x.split(/-/)
x = name1.capitalize + "-" + name2.capitalize
else
x.capitalize!
end
end
puts name_split.join(" ")
Результатом является неожиданным "Джон DOE-СМИТ"
Почему x.capitalize! имеют эффект, тогда как x = "foo" не имеет?
Есть ли лучший способ сделать это?