相关疑难解决方法(0)

Ruby中奇怪的反斜杠替换

我不明白这个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)

ruby regex backslash

26
推荐指数
2
解决办法
2万
查看次数

Ruby /&in String

我需要在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 escaping

1
推荐指数
1
解决办法
51
查看次数

标签 统计

ruby ×2

backslash ×1

escaping ×1

regex ×1