我需要在ZPL字符串中包含/&,以使标签上的长行中断。
有一个stackoverflow post提出了很多方法,但似乎没有回答我的问题:
这是我的问题:
>>"asdf & asdf".gsub("&", "\\\\&")
=>"asdf \\& asdf"
是的,如果我放入字符串,它将返回我想要的内容:
>>puts "asdf & asdf".gsub("&", "\\\\&")
=>asdf \& asdf
但是我需要实际的字符串等于asdf \& asdf
我尝试检查:
>>"asdf & asdf".gsub("&", "\\\\&").inspect
=>"\"asdf \\\\& asdf\""
>>"asdf & asdf".gsub("&", "\&").inspect
=>"\"asdf & asdf\""
但这也不能返回我需要的东西。也许我缺少某种组合,它将在字符串中返回\&?
谢谢
答案 0 :(得分:5)
当您看到Ruby显示如下内容时:
"asdf \\& asdf"
这被分解为令牌\\
(反斜杠)和&
(与号),其中第一个反斜杠是特殊字符,第二个是实际字符。您可以将其读为“ 文字反斜杠”。
打印时,您会看到实际的字符串。是的。
内部实际上并没有双反斜杠,这只是必须处理双引号字符串的结果。
这是为了确保\n
和\r
和其他控制字符可以正常工作,但是您也可以输入实际的反斜杠。 \n
(换行符)和\\n
(文字反斜杠字母n)之间有很大的区别。
在处理带有特殊字符的数据格式时,您会经常看到这种情况。例如,在printf
样式格式化程序中,%
很重要,因此要打印实际的%
,您需要将其加倍:
'%.1f%%' % 10.3
#=> "10.3%"
每种格式都有其自身的怪癖和问题。 HTML不会将反斜杠视为特殊字符,但它会将<
和>
和&
当作特殊字符,因此您会看到&
而不是&符号。