2011-07-06 50 views
0

このバックスラッシュを削除するにはどうすればよいですか?Rubyでこのバックスラッシュを削除するには

s = "\"" 

それは同じ文字列を返し、私はs.gsub("\\", "")を試してみましたし、それはそれは削除されません。

+2

's'は単なる' ''文字を含む文字列ではありませんか? – lzm

答えて

1

あなたの文字列にはバックスラッシュ文字が実際にありません実際にエスケープ引用記号(それを見るために、印刷の操作を行う)

11

です。あなたの例のバックスラッシュは、単に次の二重引用符をエスケープして、それが文字列を終了させ、それによって構文エラー(二重引用符を終端しない)になることを防止します。

その文字列をIRBに印刷すると、実際にはバックスラッシュはそのままではありませんが、二重引用符がエスケープされていることを示すために、次のような組み合わせでバックスラッシュが使用されます。あなたが初めてそれに遭遇したときに把握しにくい種類。見てhttp://en.wikibooks.org/wiki/Ruby_Programming/Strings#Escape_sequences

長い話を短く:あなたはそれを削除することはできませんので、:)

3

gsubは、最初のパラメータとして正規表現をとり、あなたの文字列にはバックスラッシュがありません。私は、文字列を渡すと、まずそれを正規表現に変換すると信じています。

s.gsub("\\\\", "") 

あなたが正規表現の表記を使用する場合は、あなたがアップ倍増からそれを停止することができます:これは、あなたが余分なエスケープ処理を必要とする意味

s.gsub(/\\/, "") 

あなたが二回エスケープする必要はありませんので、これは次のとおりです。一度ダブルので、引用符で囲まれた文字列は、\という文字をエスケープする必要があります。

+0

これは本当に問題ではありません.Paukulは正しくあります。 @rogerdpack。 – Ryanmt

+1

くそ、私はそれを見ていないと信じることはできません@Paukulは私からupvoteを取得します –

0

これがあなたの問題の解決策であるかどうかはわかりませんが、これは私の問題を解決しようとしたときに見た最初のSOの質問の1つです。実際には解決しました。私の問題を解決しました。

私は\(バックスラッシュ)と不要な引用符を含むCSV.read出力をいくつか持っていました。

arr_of_arrays = CSV.read("path/to/file.csv") 

processed_csv = arr_of_arrs.map {|t| eval(t)} 

ここでのキーはeval()メソッドです。

+0

更新:私の先生はevalを使用してこのケースにintに行く最良の方法ではないと言ったどのようなルビコードを実行しても実行できないので、ユーザーが潜在的に悪質なコードを入力して実行する可能性があるため、evalは危険な状態になる可能性があります。 –

+0

私の場合、 – DickieBoy

関連する問題