我需要在ZPL字符串中包含/&以打破标签上的长行.
有一个stackoverflow帖子提出了很多方法,但似乎没有回答我的问题:
这是我的问题:
>>"asdf & asdf".gsub("&", "\\\\&")
=>"asdf \\& asdf"
Run Code Online (Sandbox Code Playgroud)
是的,如果我把字符串放回去它会返回我想要的东西:
>>puts "asdf & asdf".gsub("&", "\\\\&")
=>asdf \& asdf
Run Code Online (Sandbox Code Playgroud)
但我需要实际的字符串相等 asdf \& asdf
我试过检查:
>>"asdf & asdf".gsub("&", "\\\\&").inspect
=>"\"asdf \\\\& asdf\""
>>"asdf & asdf".gsub("&", "\&").inspect
=>"\"asdf & asdf\""
Run Code Online (Sandbox Code Playgroud)
但这也不能回报我的需要.也许有一些我错过的组合会返回一个\&在字符串中?
谢谢
当你看到Ruby显示的内容如下:
"asdf \\& asdf"
Run Code Online (Sandbox Code Playgroud)
这被分解为令牌\\(反斜杠)和&(&符号),其中第一个反斜杠是特殊的,第二个是实际角色.您可以将其读作" 文字反斜杠".
打印时你会看到实际的字符串.这是正确的.
在内部,双反斜杠实际上并不存在,这只是必须处理双引号字符串的结果.
这是为了确保\n和\r和其他的控制工作,但你也能够把实际的反斜杠.\n(换行符)和\\n(字面反斜杠字母n)之间有很大的区别.
在处理具有特殊字符的数据格式时,您会经常看到这种情况.例如,在printf样式格式化程序中%很重要,因此要打印实际%需要将其加倍:
'%.1f%%' % 10.3
#=> "10.3%"
Run Code Online (Sandbox Code Playgroud)
每种格式都有自己的怪癖和关注点.HTML不会将反斜杠视为特殊,但它确实<和,>并且&,因此您将看到&而不是&符号.