文字列の一重引用符と二重引用符をエスケープするにはどうすればよいですか?rubyの文字列の一重引用符と二重引用符をエスケープしますか?
一重引用符と二重引用符を一緒にエスケープしたいと考えています。私はそれらを別々に渡す方法を知っていますが、両方を渡す方法はわかりません。
例:str = "ruby 'on rails" " = ruby 'on rails"
文字列の一重引用符と二重引用符をエスケープするにはどうすればよいですか?rubyの文字列の一重引用符と二重引用符をエスケープしますか?
一重引用符と二重引用符を一緒にエスケープしたいと考えています。私はそれらを別々に渡す方法を知っていますが、両方を渡す方法はわかりません。
例:str = "ruby 'on rails" " = ruby 'on rails"
>> str = "ruby 'on rails\" \" = ruby 'on rails"
=> "ruby 'on rails" " = ruby 'on rails"
あなたは、あなたが好きな区切り文字を使用することを許可Q文字列を使用することができます:私の好ましい方法は、エスケープして使用して、%Q心配しないことです
str = %Q|ruby 'on rails" " = ruby 'on rails|
使用し、バックスラッシュは、より複雑なシナリオで%Q[]
の使用例を次に示します。
%Q[
<meta property="og:title" content="#{@title}" />
<meta property="og:description" content="#{@fullname}'s profile. #{@fullname}'s location, ranking, outcomes, and more." />
].html_safe
を脱出する
ので
str = %q[ruby 'on rails"] # Single quoting
str2 = %Q[quoting with #{str}] # will insert variable
私は行くだろうheredoc私がエスケープすることを心配し始めているならば。
string = <<MARKER
I don't have to "worry" about escaping!!'"!!
MARKER
MARKERは、文字列の開始/終了を区切ります。 heredocを開いた後に次の行に文字列を開始し、それからその文字列をその行のdelineatorを使って終了させます。
このすべてのエスケープが必要と二重引用符で囲まれた文字列に変換しない:ここで
string
=> "I don't have to \"worry\" about escaping!!'\"!!\n"
heredocは、小さな文字列を引用するうんざりな方法です。この質問が必要とするのは、すべての引用オプションとその賛否両論を列挙したメタアンプルです。 –
非常に真実、マーク。私は小さな文字列でそれらを使うのは面倒だと言わなければならなかった。 – jbarr
は完全なリストである:私はちょうど使用するhttp://learnrubythehardway.org/book/ex10.html
1つの警告:文字列の比較のため%Q[]
と%q[]
を使用して
が直感的に安全ではありません。
たとえば、何かを空にするためのもの、たとえば""
または''
をロードする場合は、実際のエスケープシーケンスを使用する必要があります。たとえば、空の文字列の代わりにqvar
が""
に等しいとします。
これは、コマンドラインを送信する際に、この、この一方で
if qvar == %Q[]
が、私はこの問題に遭遇したtrue
if qvar == "\"\""
と評価されますfalse
if qvar == "%Q[]"
ように評価します別のスタックから私のルビスクリプトに書き換えます。私のために働いたのはGabriel Augusto's answerだけです。
私は検索バーがあり、この「sdasd」「FSDを解析された」とは私を与える= Q | sdasd」 – Aleem
どれドキュメントが参照 – Numbers