2014-09-11 5 views
0

Мне нужно удалить гласные из строки.Ruby Array get split

Я пытался что-то вроде:

str = gets 
str.split(//) 

сделать массив, а затем

A1 = ['a', 'e', 'u', 'y', 'i', 'o'] 
str-A1 
str.to_s 
p str 

Но я не знаю, как поставить его вместе, чтобы удалить гласные из строки.

+3

Что вам нужно? присоединиться к строке? – xdazz

+0

Каков ваш ожидаемый результат? –

+0

Мне нужно удалить гласные из строки –

ответ

3
gets.gsub(/[aeiou]/i, '').chomp 

или немного более легким

a = gets.delete 'aeiouAEIOU' 
a.gsub("\n",'') 

Вы можете проверить этот ответ, выполнив выше код на http://repl.it/languages/Ruby.

+0

В вопросе 'gets' является функцией для ввода ввода из STDIN, а не строкового литерала. – Thilo

+0

Извините, что моя ошибка поняла .. Позвольте мне очистить –

+0

Ответ Обновлено .. :) –

1

Вот простой фрагмент кода, который фильтрует гласные из строки, которая была считана из стандартного ввода/консоли:

#!/usr/bin/env ruby 

s = gets 
sa = s.split(//) 
vowels = 'aeiouy'.split(//) 

puts sa.delete_if{|a| vowels.include?(a)}.join('') 

Мой vowels функционально эквивалентен вашему A1 ... хотя легче читать (меньше пунктуации загромождая линию). Обратите внимание, что .split() возвращает массив из разделяемой строки. Также это не наборы, и поэтому нет перегрузки оператора - (минус) для обеспечения заданных различий. (Кажется, это то, чего вы ожидали, и это не сработает здесь).

Обратите внимание, что этот пример преобразует входы и список гласных в массивы ... при молчаливом предположении, что вы хотите выполнять обработку других массивов в стороне от простой фильтрации. Было бы более краткими держать их обоих как строки (как показано в других ответах на этот вопрос).