繁体   English   中英

将双引号更改为单引号

[英]Changing Double Quotes to Single

我正在Ruby中进行项目。 我正在使用的库返回带双引号的字符串,例如: "\\x00\\x40" 由于字符串用双引号引起来,因此可以转换为ASCII字符的所有十六进制都会被转换。 因此,当我打印时,我实际上看到: "\\x00@"

我发现,如果我使用单引号,则字符串将以纯十六进制(无需转换)打印,这就是我想要的。 如何将双引号字符串更改为单引号?

由于它是C扩展,因此我无法更改库中的返回类型,而且我无法弄清楚从何处返回该值。 任何想法表示赞赏。

"\\x00\\x40"'\\x00\\x40'产生完全不同的字符串。

"\\x00\\x40"创建一个2字节的字符串,十六进制值为0x000x40

"\x00\x40".length
# => 2

"\x00\x40".chars.to_a
# => ["\u0000", "@"]

'\\x00\\x40'创建一个包含8个字符的字符串:

'\x00\x40'.length
# => 8

'\x00\x40'.chars.to_a
# => ["\\", "x", "0", "0", "\\", "x", "4", "0"]

这是由Ruby的解析器完成的,一旦创建了字符串,您将无法更改它。

但是,您可以转换字符串以获取其十六进制表示形式。

String#unpack将字符串解码为十六进制字符串,即返回每个字节的十六进制值作为字符串:

hex = "\x00\x40".unpack("H*")[0]
# => "0040"

String#gsub每2个字节添加/插入\\x

hex.gsub(/../) { |s| '\x' + s }
# => "\\x00\\x40"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM