为什么我的 Ruby 字符串显示转义字符反斜杠 ('\') 两次?

sea*_* an 1 ruby string escaping

我\.br\用作分隔符:

[10, 20, 30].join('\.br\\')
Run Code Online (Sandbox Code Playgroud)

预期结果:

"10\.br\20\.br\30"
Run Code Online (Sandbox Code Playgroud)

实际返回的内容:

"10\\.br\\20\\.br\\30"
Run Code Online (Sandbox Code Playgroud)

我为反斜杠添加了转义符,我怎么能得到预期的结果?

cli*_*ath 5

我想你会发现反斜杠实际上并没有在字符串中加倍。
要检查,而不是使用p(使用String#inspect)打印它,只需使用puts.

当字符串被inspect编辑时,它使用双引号,并尝试生成一个字符串版本,您可以将其复制并粘贴到 Ruby 中以获得相同的字符串 - 因此它需要将反斜杠字符加倍。

  • 你没有问题。字符串中的反斜杠不会加倍。它们在为您的字符串生成的打印输出中加倍。改为打印字符数,以验证这一点。 (2认同)