Ты делаешь это слишком сложным. Я бы сделал это:
hg = "'Erra', 'Erra-Network', 'Discovery'"
hg.delete(" '").split(',') # => ["Erra", "Erra-Network", "Discovery"]
delete
выполняет очистку, что следует сделать перед попыткой split
строки.
delete_prefix
и delete_suffix
являются полезными методами, но не при обработке строк, которые вы анализируете, потому что они заставляют вас итеративно обрабатывать подстроки. delete
выполняет всю строку за один шаг, что быстрее.
Если бы я собирался выполнить итерацию, я бы сделал что-то вроде этого:
hg.split(/, */).map { |s| s[1..-2] } # => ["Erra", "Erra-Network", "Discovery"]
, который использует split
возможность использовать регулярное выражение для автоматического разбиения на запятую, за которой следует любое количество пробелов. В основном вы будете пытаться проанализировать искаженную запись CSV, поэтому вы должны использовать класс CSV . В документации есть много примеров для анализа записей:
require 'csv'
CSV.parse(hg.delete("' ")).flatten # => ["Erra", "Erra-Network", "Discovery"]
В CSV есть много доступных опций для обработки нечетных вариаций разделителей и строк в кавычках, поэтому изучите документацию, если хотите go таким образом.