Я хочу убрать начальные и конечные кавычки в Ruby из строки. Цитата встречается 0 или 1 раз. Например, все следующие элементы следует преобразовать в foo, bar:
«foo, bar»
«foo, bar
foo, bar»
foo, bar
Вы также можете использовать функцию chomp
, но, к сожалению, она работает только в конце строки, предполагая, что было обратное chomp, вы могли:
'"foo,bar"'.rchomp('"').chomp('"')
Реализовать rchomp
прост:
class String
def rchomp(sep = $/)
self.start_with?(sep) ? self[sep.size..-1] : self
end
end
Обратите внимание, что вы также можете сделать это встроенным, с немного менее эффективной версией:
'"foo,bar"'.chomp('"').reverse.chomp('"').reverse
РЕДАКТИРОВАТЬ: Начиная с Ruby 2.5, rchomp (x)
доступен под именем delete_prefix
и chomp (x)
доступен как delete_suffix
, что означает, что вы можете использовать
'"foo,bar"'.delete_prefix('"').delete_suffix('"')
Я могу использовать gsub для поиска начальной или конечной цитаты и заменить ее пустой строкой:
s = "\"foo,bar\""
s.gsub!(/^\"|\"?$/, '')
Как указано в комментариях ниже, лучшее решение:
s.gsub!(/\A"|"\Z/, '')
Как обычно, все сначала берут регулярное выражение из панели инструментов. : -)
В качестве альтернативы я рекомендую изучить .tr ('"', '')
(также известный как" перевод "), который в данном случае действительно удаляет кавычки.