Как убрать начальную и конечную цитату из строки в Ruby

Я хочу убрать начальные и конечные кавычки в Ruby из строки. Цитата встречается 0 или 1 раз. Например, все следующие элементы следует преобразовать в foo, bar:

  • «foo, bar»
  • «foo, bar
  • foo, bar»
  • foo, bar
35
задан the Tin Man 3 February 2016 в 18:02
поделиться

3 ответа

Вы также можете использовать функцию 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('"')
34
ответ дан 27 November 2019 в 06:32
поделиться

Я могу использовать gsub для поиска начальной или конечной цитаты и заменить ее пустой строкой:

s = "\"foo,bar\""
s.gsub!(/^\"|\"?$/, '')

Как указано в комментариях ниже, лучшее решение:

s.gsub!(/\A"|"\Z/, '')
37
ответ дан 27 November 2019 в 06:32
поделиться

Как обычно, все сначала берут регулярное выражение из панели инструментов. : -)

В качестве альтернативы я рекомендую изучить .tr ('"', '') (также известный как" перевод "), который в данном случае действительно удаляет кавычки.

22
ответ дан 27 November 2019 в 06:32
поделиться
Другие вопросы по тегам:

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