Используя этот фрагмент кода в файле представления html.slim, измените окончание имени с e
на ai
, и оно отлично работает:
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : w) }.join(" ")
Ииспользуя этот горох для нескольких вариантов:
@provider_user.name.split.map {|w| (w.end_with?('e') ? (w.chomp(w[w.length - 1]) + 'ai') : (w.end_with?('d') ? (w.chomp(w[w.length - 1]) + 'i') : (w.end_with?('as') ? (w.chomp(w[w.length - 1]) + 'u') : w))) }.join(" ")
Все хорошо, когда нужно изменить только последнюю строку, например name = namai, namd = nami
.
Однако для (w.end_with?('as') ? (w.chomp(w[w.length - 1]) + 'u')
iполучить namas = namau
вместо namas = namu
.
Полагаю, это связано с length - 1
, который выполняет замену только последней строки.
Как ее можно изменить, чтобы заменить больше, чем последняястрока