2017-01-20 16 views
-1

Дано:Удаление символов из элементов массива в Ruby,

array = ["1289", "12 apples", "12546", "123"] 

Как я могу напечатать все элементы массива, с «12» удалены? Ответ, который я ищу, должен применяться, даже если массив содержит сотни элементов.

+0

итерацию и GSUB? –

+0

Каков ожидаемый результат в следующих случаях: «aples12», «ap12les»? Другими словами, «12» должны быть отобраны в любом положении или только в начале строки? –

+0

Только начало для этого. Хотя я хотел бы знать, как это сделать с 12 в любой позиции. –

ответ

0

Просто используйте map с gsub (или sub, когда 12 появляется только один раз в строке):

array = [ "1289", "12 apples", "12546", "123"] 
array.map { |word| word.gsub('12', '') } 
#=> ["89", " apples", "5463", "3"] 
+0

Интересно, почему мой пост был проголосован несколько раз, но никто не объяснил почему. ОП пояснила в комментариях, что она хочет сделать это с 12 в любой позиции * (а не только в начале), и мой ответ делает это ... – spickermann

+0

То же самое произошло со мной. Не уверен, кто делает диск - путем downvoting по этому вопросу. Независимо от того, я проголосовал за то, чтобы закрыть как нечеткое, что вы просите. –

-3

Если вы хотите сделать это "на месте" Я бы

array = ["1289", "12 apples", "12546", "123"] 
array.each{ |s| s['12'] = '' } 
0

Вы можете использовать любое из следующих действий.

array = [ "1289", "12 apples", "1254612", "123"] 

раствор 1 (используя метод string#tr)

array.each{|string| puts string.tr("/12(\s+)?/", '')} 

## Output 
"89" 
"apples" 
"546" 
"3" 

Раствор 2 (с использованием метода string#gsub)

array.each{|string| puts string.gsub(/12(\s+)?/, '')} 

## Output 
"89" 
"apples" 
"546" 
"3"