Это довольно простой, но я не уверен, как это сделать, если я не использую массив внутри карты, который является хромым.Карта dont proccess, если условие истинно
Мне нужно, чтобы получить это:
"T--- is my d-- b-- n-- y---"
Если есть два символа, мне нужно, чтобы пропустить его, не обрабатывать его, но по-прежнему держать его. Если я использую next
, я получаю нуль.
str = "This is my day but not your"
str.split.map{ |word| word[0] + word[1..-1].gsub(/./,"-")} * " " #=> T--- i- m- d-- b-- n-- y---
Это мое второе решение, которое мне не нравится, но это работает, я уверен, что есть более элегантное решение:
arr = Array.new
str.split.map{ |word|
arr << word if word.length < 3
arr << word[0] + word[1..-1].gsub(/./,"-")} * " "
puts arr.join(" ")
Что произойдет, если слово является одним символом, например «a» или «I»? –
Спасибо за вклад TinMan, мне нравится ваше решение. Если слово является одиночным символом, оно не будет заменено, и я не хочу, чтобы это было. – BulletTime