2016-07-20 18 views
0

に文字列の内側の二重引用符を置き換えます私は、配列内の文字列を持つ配列

["foo","bar","foo"bar"baz"] 

私は、この文字列の配列を形成するためにevalメソッドを使用していますが、内側の二重引用符がエスケープされていません。

eval('["foo","bar","foo"bar"baz"]') # => SyntaxError 

配列要素内のものだけをエスケープする方法はありますか?

+0

パターンを書き込もうとしましたか?あなたの試行を共有してください。 –

+0

結果として得たいものを教えてください。 –

+0

@WiktorStribiżew私はこれを試しています。https://repl.it/CdvP/1 –

答えて

3

私は私はあなたがこれは、すべての可能な変形のために働くかもしれない

+4

または '.gsub(/ \ b" \ b /、 '\ "')' –

+0

ええ、これははるかに優雅な解決です –

+0

残念ながら、すべてのケースを修正するわけではありません。 "[" foo "、" foo "b ar" baz "、" "" ""] ''の場合はどうでしょうか? –

1

を意味しているものを得た場合、あなたが

eval('["foo","bar","foo"bar"baz"]'.gsub(/(\w)\"(\w)/, '\1\"\2')) 

ような何かを試すことができると思います。これはコンマや角かっこの近くに表示される以外のすべての引用符を修正します

.gsub(/(?<!\,)(?<!\[)(?<!\])\"(?!\,)(?!\[)(?!\])/, '\"') 
関連する問題