8

\nルビーで文字列を印刷するときは残しておきたいのですが、

今のように、putsまたはprintを使用\nすると、改行で終わります。

pry(main)> print "abc\nabc"
abc
abc

ルビーに次のように印刷させる方法はありabc\nabcますか?

アップデート

申し訳ありませんが、はっきりさせなかったのかもしれません。正規表現をデバッグしているので、文字列を出力するときに、 a\nが改行ではなく、として表示されていると\n、確認しやすくなります。したがって、@slivuの答えはまさに私が望むものです。みんなありがとう。

4

6 に答える 6

14

/pの代わりに使用することをお勧めします:putsprint

p "abc\nabc"
=> "abc\nabc"

実際、pryこれらを使用する必要はありません。文字列を入力して次のように入力するだけです。

str = "abc\nabc"
=> "abc\nabc"
str
=> "abc\nabc"
于 2012-11-24T06:34:29.430 に答える
2

Rubyでは、「abc\nabc」のような一重引用符のリテラル内の文字列は補間されません。

1.9.3p194 :001 > print 'abc\nabc'
abc\nabc => nil 

対二重引用符付き

1.9.3p194 :002 > print "abc\nabc"
abc
abc => nil 
于 2012-11-24T06:31:31.770 に答える
2

\ nは特別なキーワードであるため、次のように、特別なキーワードの前にバックスラッシュを追加してエスケープする必要があります(そのため、バックスラッシュもエスケープする必要があります)abs\\nabc。印刷する\\n場合は、を置き換える必要がありますabs\\\\n(バックスラッシュを表示するには2つのバックスラッシュ)。

特別なキーワードが解釈されないように、二重引用符の代わりに一重引用符を使用することもできます。これは、私見ですが、悪い習慣ですが、コードの見栄えが良くなるのであれば、それだけの価値があると思います:)

エスケープする方法の例を次に示します(TL; DRバージョンのようなもの)。

puts 'abc\nabc' # Single quotes ignore special keywords
puts "abc\\nabc" # Escaping a special keyword (preferred technique, IMHO)
p "abc\nabc" # The "p" command does not interpret special keywords
于 2012-11-24T06:29:57.013 に答える
1

このようにすることもできます

puts 'abc\nabc'
于 2012-11-24T09:37:01.287 に答える
0

たとえば、%qを使用して文字列を作成します。

  str = %q{abc\nklm}
  puts str #=> 'abc\nklm'

また

  puts %q{abc\nklm}

またはエスケープ文字を使用します

  puts "abc\\nklm"
于 2012-11-24T06:30:39.190 に答える
0

文字列を印刷するには:abc\nabc コード化された文字列は次のとおりである必要があります:abc\\nabc改行を生成しません。

于 2020-04-09T05:58:59.433 に答える