4

Ruby でPython の文字列encode('string_escape')decode関数に相当するものは何ですか?

Python では、次のことができます。

>>> s="this isn't a \"very\" good example!"
>>> print s
this isn't a "very" good example!
>>> s
'this isn\'t a "very" good example!'
>>> e=s.encode('string_escape')
>>> print e
this isn\'t a "very" good example!
>>> e
'this isn\\\'t a "very" good example!'
>>> d=e.decode('string_escape')
>>> print d
this isn't a "very" good example!
>>> d
'this isn\'t a "very" good example!'

Rubyで同等のことを行うには?

4

3 に答える 3

0

おそらくinspect

irb(main):001:0> s="this isn't a \"very\" good example!"
=> "this isn't a \"very\" good example!"
irb(main):002:0> puts s
this isn't a "very" good example!
=> nil
irb(main):003:0> puts s.inspect
"this isn't a \"very\" good example!"

inspect は utf-8 ファイルで有効でないもの (バイナリなど) もエスケープするため、デコードは非常にトリッキーであることに注意してください。それを文字列に戻すと、独自のパーサーまたはeval次のいずれかから解析されます。

irb(main):001:0> s = "\" hello\xff I have\n\r\t\v lots of escapes!'"
=> "\" hello\xFF I have\n\r\t\v lots of escapes!'"
irb(main):002:0> puts s
" hello� I have

         lots of escapes!'
=> nil
irb(main):003:0> puts s.inspect
"\" hello\xFF I have\n\r\t\v lots of escapes!'"
=> nil
irb(main):004:0> puts eval(s.inspect)
" hello� I have

         lots of escapes!'
=> nil

明らかに、あなたinspectが.inspectevals.is_a? String

于 2013-11-14T23:55:26.143 に答える
0

これが関連しているかどうかはわかりませんが、エスケープの処理を避けたい場合は、%q[ ]構文を使用するだけです

s = %q[this isn't a "very" good example!]
puts s
p s

あげる

'this isn't \ a "very" good example!'
"'this isn't \\ a \"very\" good example!'"
于 2013-11-15T00:13:59.647 に答える