Ruby удаляет метод (обработка строк)

Я плохо знаком с Ruby и прокладывал себе путь через Скромное Маленькое Руководство Ruby г-на Neighborly. Было несколько опечаток в примерах кода по пути, но мне всегда удавалось удаться что случилось и впоследствии зафиксировать его - до сих пор!

Это является действительно основным, но я не могу заставить следующий пример работать над Mac OS X (Snow Leopard):

gone = "Got gone fool!"
puts "Original: " + gone
gone.delete!("o", "r-v")
puts "deleted: " + gone

Вывод, который я ожидаю:

Original: Got gone fool!
deleted: G gne fl!

Вывод, который я на самом деле получаю:

Original: Got gone fool!
deleted: Got gone fool!

Удаление! метод, кажется, не имел эффекта.

Кто-либо может пролить какой-либо свет на то, что идет не так, как надо здесь?:-\

6
задан Brian Tompsett - 汤莱恩 6 July 2015 в 19:00
поделиться

3 ответа

Метод String.delete ( Документированный здесь ) обрабатывает свои аргументы как массивы, а затем удаляет символы на основе пересечение его массивов.

Пересечение двух массивов - это все символы, общие для обоих массивов. Таким образом, ваше исходное удаление пропало.delete! ("O", "rv") превратилось бы в

gone.delete ['o'] & ['r','s','t','u','v']

В обоих массивах нет символов, поэтому при удалении будет получен пустой массив, следовательно, символы не будут удалено.

10
ответ дан 8 December 2019 в 18:34
поделиться

Вы получаете то же значение o / p, используя другой способ, например gsub

puts "deleted: " + gone.gsub('o', '')

o / p

deleted: Got gone fool!
1
ответ дан 8 December 2019 в 18:34
поделиться

Я изменил

gone.delete!("o", "r-v")

на

gone.delete!("or-v")

и все работает нормально.

2
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: