如何从字符串中删除前导引号和尾随引号仅当两者都存在时?例如
"hello world" => hello world
"hello world => "hello world
hello world" => hello world"
我用 gsub
试过了,但下面的命令删除了每个前导引号或尾随引号,无论是否存在另一个引号
'"hello world"'.gsub(/\A"|"\Z/, '')
# => this is ok it returns 'hello world'
'hello world"'.gsub(/\A"|"\Z/, '')
# => returns 'hello world' but should return 'hello world"'
最佳答案
你可以使用
str.gsub(/\A"+(.*?)"+\Z/m, '\1')
该模式将匹配一个以一个或多个"
开头的字符串,然后它可以有任何字符,任意数量的字符,然后在字符串末尾有一个或多个双引号。整个没有前导和尾随引号的字符串将被插入到带有 \1
反向引用的替换结果中。
参见 IDEONE demo
只删除第一个和最后一个双引号,你可以使用
str.gsub(/\A"(.*)"\Z/m, '\1')
关于ruby - 如果存在,则从字符串中删除前导引号和尾随引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35182160/