文字列に\1
を書き込もうとしていますが、できません。誰かが私にこの奇妙な振る舞いを助けてくれたら、私は感謝しています。 Hereは説明のある例です。文字列に 1を書き込む方法
EDIT:追加の出力例
puts "\1 <- null"
puts "\\1 <- slash one"
作品!
が、IRBコマンドラインで "\1"
"\\1"
を入力するには
"\1"
=> "\u0001
"\\1"
を生み出します
文字列に\1
を書き込もうとしていますが、できません。誰かが私にこの奇妙な振る舞いを助けてくれたら、私は感謝しています。 Hereは説明のある例です。文字列に 1を書き込む方法
EDIT:追加の出力例
puts "\1 <- null"
puts "\\1 <- slash one"
作品!
が、IRBコマンドラインで "\1"
"\\1"
を入力するには
"\1"
=> "\u0001
"\\1"
を生み出します
それを得るためにいくつかの方法があります。
"\\1"
'\1'
?\\ + ?1
は、あなたが望むものであるリテラルのバックスラッシュ、1を意味し、それが表示されます方法は常に"\\1"
であることを忘れないでください。これが正しいことを知る方法はputs
を使用することです:
puts "\\1"
# => \1
二重引用符で囲まれた文字列の内部では、バックスラッシュが重要な意味を持ちます。 \n
は、改行文字を意味します。一重引用符で囲まれた文字列では、これは2つの文字(バックスラッシュとn
)です。
あなたも、これをテストすることができます
"\\1".chars
# => ["\\", "1"]
'\1'.chars
# => ["\\", "1"]
だからあなたはRubyは解釈され見ることができる2つの文字ではなく、3など。二重引用符で囲まれた文字列の中の二番目のバックスラッシュに騙されてはいけません。これが文字通りのバックスラッシュの表現です。
私がIRBにいて、\1
と入力した場合、返される値は\u0001
であり、文字を表す のRubyの方法です。
puts('\1
と書くと、スクリプトを実行すると、IRBと同じ動作になります。
0 0
0 1
これは、すべてのプラットフォームで同じ出力されません、次のように私はUnicode文字マップを参照してください(これは、Unicodeが 表示されている方法によって異なります)。ですから、おそらくrepl.itの例では何も出力されません。
puts '\1'
を試しましたか? (二重の代わりに一重引用符) 私はあなたが何を求めているのかは確かではありませんが、それが助けてくれれば歓迎します。
irbが文字列をエスケープするオブジェクトに対して.inspectを実行するため、コマンドラインに「\ 1」と表示されます。だから本質的に\ 1は適切に保存されていますが、それを表示しているときには別の\が追加されてエスケープされたことを示します
あなたの疑問を編集してください。他のサイトへのリンクは悪くなる傾向があり、この質問や回答は今後の訪問者にはあまり役立ちません。 –
文字通り*バックスラッシュを1つ*したいですか? – tadman
ようこそスタックオーバーフローへ。 "[ask]"と "[mcve]"をお読みください。私たちはあなたのコードと努力のエビデンスを他の場所へのリンクではなく質問自体に含めることを期待しています。あなたの質問は誰にも分かりません。 –