簡體   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