【问题标题】:Why does my Ruby string show the escape character backslash ('\') twice?为什么我的 Ruby 字符串显示转义字符反斜杠 ('\') 两次?
【发布时间】:2015-12-10 01:59:03
【问题描述】:

我使用\.br\ 作为分隔符:

[10, 20, 30].join('\.br\\')

预期结果:

"10\.br\20\.br\30"

实际返回的内容:

"10\\.br\\20\\.br\\30"

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

【问题讨论】:

    标签: ruby string escaping


    【解决方案1】:

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

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

    【讨论】:

    • 我还是不明白。如果我使用puts,那很好。我究竟该如何解决我的问题?
    • @seanan - 关键是你没有问题。您的字符串正是您所期望的,正是 irb 以这种奇怪的方式显示它 - 只要您尝试在应用程序中使用该字符串,您就会发现它是正常的。
    • 你没有问题。反斜杠在您的字符串中没有加倍。它们在为您的字符串生成的打印输出中加倍。改为打印字符数,以验证这一点。
    • 谢谢。这是红宝石,还是这里有一些常见的模式?
    • @seanan 这是 irb 的东西 - irb 使用 inspect 输出,因此转义字符串。
    猜你喜欢
    • 2018-11-17
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多