Ruby Array разделить
Мне нужно удалить гласные из строки.
Я пробовал что-то вроде:
str = gets
str.split(//)
сделать массив, а затем
A1 = ['a', 'e', 'u', 'y', 'i', 'o']
str-A1
str.to_s
p str
Но я не знаю, как соединить это, чтобы удалить гласные из строки.
2 ответа
gets.gsub(/[aeiou]/i, '').chomp
или немного проще
a = gets.delete 'aeiouAEIOU'
a.gsub("\n",'')
Вы можете проверить этот ответ, выполнив код выше по адресу http://repl.it/languages/Ruby.
Вот простой фрагмент кода, который фильтрует гласные из строки, которая была прочитана из stdin/console:
#!/usr/bin/env ruby
s = gets
sa = s.split(//)
vowels = 'aeiouy'.split(//)
puts sa.delete_if{|a| vowels.include?(a)}.join('')
мой vowels
функционально эквивалентно вашему A1
... хотя легче читать (меньше пунктуации, загромождающей строку). Обратите внимание, что .split()
возвращает массив из разделяемой строки. Кроме того, они не являются наборами и, следовательно, нет перегрузки - (минус оператор), чтобы обеспечить различия между наборами. (Кажется, это то, что вы ожидали, и это не сработает здесь).
Обратите внимание, что этот пример преобразует входные данные и список гласных в массивы... при молчаливом предположении, что вы захотите выполнить другую обработку массива, помимо показанной простой фильтрации. Было бы более кратко хранить их как строки (как показано в других ответах на этот вопрос).