@OrdeO
just......newbie

Как заменить запятую на скобки в руби?

Есть такая строка "Hello everybody, my name is alex"
Как сделать так, что б текст после запятой был обернут в скобки и каждое слово в скобках начиналось с большой буквы?
Получился вот такой результат:
Hello everybody (My Name Is Alex)

Что-то вроде этого, но что бы вместо массива принимало строку
def change_comma(word)
  word.map do |el|
    if el =~ /.+,.+/
      e = el.split(',')
      e[0] + ' (' + (e[1].split.map(&:capitalize).join(' ')) + ')'
    else
      el
    end
  end
end


сейчас что б заработало нужно обворачивать в массив, вот так: change_comma(["Hello everybody, my name is alex"])
  • Вопрос задан
  • 77 просмотров
Решения вопроса 2
zorar4ik
@zorar4ik
Full stack overflow
def change_comma(sentence)
 return sentence if !sentence.is_a?(::String) || !sentence.include?(',')
 first_part, second_part = sentence.split(',', 2)[0], sentence.split(',', 2)[1]
 "#{first_part} (#{second_part.split.map(&:capitalize).join(' ')})"
end
Ответ написан
DevMan
@DevMan Куратор тега Регулярные выражения
зачем для этого вообще регулярки? которые могут вычленить текст, но не могут его обрабатывать.
это же элементарная работа со строкой:
- разбить по запятой
- вторую часть перевести в верхний регистр
- склеить обратно, взяв вторую часть в скобки.

str = "Hello everybody, my name is alex"
str = str.split(", ")
str = str[0] + " (" + str[1].split.map(&:capitalize).join(" ") + ")"
https://ideone.com/4vFxFL
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы