我不明白这个Ruby代码:
>> puts '\\ <- single backslash'
# \ <- single backslash
>> puts '\\ <- 2x a, because 2 backslashes get replaced'.sub(/\\/, 'aa')
# aa <- 2x a, because two backslashes get replaced
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切如预期.但是如果我们搜索1 /\\/,并用2替换,编码'\\\\',为什么我们得到这个:
>> puts '\\ <- only 1 ... replace 1 with 2'.sub(/\\/, '\\\\')
# \ <- only 1 backslash, even though we replace 1 with 2
Run Code Online (Sandbox Code Playgroud)
然后,当我们编码3时'\\\\\\',我们只得到2:
>> puts '\\ <- only 2 ... 1 with 3'.sub(/\\/, '\\\\\\')
# \\ …Run Code Online (Sandbox Code Playgroud) 我需要在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)
但这也不能回报我的需要.也许有一些我错过的组合会返回一个\&在字符串中?
谢谢