2011-07-15 31 views

答えて

7
>> str = "ruby 'on rails\" \" = ruby 'on rails" 
=> "ruby 'on rails" " = ruby 'on rails" 
14

あなたは、あなたが好きな区切り文字を使用することを許可Q文字列を使用することができます:私の好ましい方法は、エスケープして使用して、%Q心配しないことです

str = %Q|ruby 'on rails" " = ruby 'on rails| 
+0

私は検索バーがあり、この「sdasd」「FSDを解析された」とは私を与える= Q | sdasd」 – Aleem

+0

どれドキュメントが参照 – Numbers

65

を(引用符で囲まれた文字列のように動作します)または二重引用符で囲まれた文字列の動作の場合は%Qです。ここでは文字

str = "ruby \'on rails\" " 
+0

それがレール上に」ルビーで引用与える\」、私は、余分な\ – Aleem

+6

を必要としないのですか?エスケープは、それを '検査する 'ときだけ表示されます。代わりに 'puts 'してみてください。 – Yossi

24

使用し、バックスラッシュは、より複雑なシナリオで%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 
0

を脱出する

ので

str = %q[ruby 'on rails"] # Single quoting 
str2 = %Q[quoting with #{str}] # will insert variable 
5

私は行くだろう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" 
+0

heredocは、小さな文字列を引用するうんざりな方法です。この質問が必要とするのは、すべての引用オプションとその賛否両論を列挙したメタアンプルです。 –

+0

非常に真実、マーク。私は小さな文字列でそれらを使うのは面倒だと言わなければならなかった。 – jbarr

3

から

enter image description here

str = %(ruby 'on rails ") %は二重引用符(または%Q)の略で、文字列の変数の補間を許可します。

1

1つの警告:文字列の比較のため%Q[]%q[]を使用して

が直感的に安全ではありません。

たとえば、何かを空にするためのもの、たとえば""または''をロードする場合は、実際のエスケープシーケンスを使用する必要があります。たとえば、空の文字列の代わりにqvar""に等しいとします。

これは、コマンドラインを送信する際に、この、この一方で
if qvar == %Q[]

が、私はこの問題に遭遇したtrue
if qvar == "\"\""

と評価されますfalse
if qvar == "%Q[]"

ように評価します別のスタックから私のルビスクリプトに書き換えます。私のために働いたのはGabriel Augusto's answerだけです。

関連する問題