2

文字列を 3 つの連続する改行 ( ) で分割しようとしています"\n\n\n"。やってみstr.split('\n\n\n')てうまくいかなかったのですが、に変えたら動くようstr.split("\n\n\n")になりました。なぜそのような行動が起こるのか、誰かが私に説明できますか?

4

3 に答える 3

8

一重引用符で囲まれた文字列は生の文字列です。3 つのバックスラッシュ'\n\n\n'と 3 つnの も同様です。期待どおりの 3 つの改行ではありません。正しくエスケープできるのは二重引用符文字列のみです。

puts 'abc\nabc'  # => abc\nabc
puts "abc\nabc"  # => abc
                 #    abc
于 2012-12-28T02:50:16.717 に答える
5

一重引用符で囲まれた文字列には、実際の/リテラル​​の内容があります。

1.9.3-p194 :003 > puts 'Hi\nThere'
Hi\nThere
 => nil 

一方、二重引用符で囲まれた文字列は特殊文字 (\n) を「補間」し、改行を行います。

1.9.3-p194 :004 > puts "Hi\nThere"
Hi
There
 => nil 
1.9.3-p194 :005 > 

ベスト プラクティスの推奨事項:

  • 可能であれば、二重引用符よりも一重引用符を選択してください (補間のために必要に応じて二重引用符を使用してください)。
  • 「どこかの "quotes" 内の引用符」をネストするときは、二重引用符を単一引用符の中に入れます
于 2012-12-28T02:58:03.333 に答える
0

一重引用符で囲まれた文字列リテラルでは、バックスラッシュを二重にする必要はありません

'\n' == '\\n'
于 2012-12-28T02:53:53.300 に答える