ruby - 检查给我\\但只放\

标签 ruby escaping

为什么两次看跌期权的结果不同?

test_string = "C:/Program Files/TestPro/TestPro Automation Framework/"
puts test_string.gsub("/","\\\\")

#result is : C:\Program Files\TestPro\TestPro Automation Framework\

puts
puts test_string.gsub("/","\\\\") .inspect

#result as desired : C:\\Program Files\\TestPro\\TestPro Automation Framework\\

最佳答案

鲁比的 String.inspect转义所有特殊字符,这就是为什么你看到 "\\"with .inspect

参见 String.inspect source这里

if (c == '"'|| c == '\\' ||
    (c == '#' &&
     p < pend &&
     MBCLEN_CHARFOUND_P(rb_enc_precise_mbclen(p,pend,enc)) &&
     (cc = rb_enc_codepoint(p,pend,enc),
      (cc == '$' || cc == '@' || cc == '{')))) {
    if (p - n > prev) str_buf_cat(result, prev, p - n - prev);
    str_buf_cat2(result, "\\");
    prev = p - n;
    continue;
}

基本上,如果 c == '\',将“\”连接到它,所以它变成了“\\

如果你想双重转义反斜杠,你需要尝试

test_string = "C:/Program Files/TestPro/TestPro Automation Framework/"
puts test_string.gsub("/","\\\\\\\\")

#C:\\Program Files\\TestPro\\TestPro Automation Framework\\

关于ruby - 检查给我\\但只放\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5880180/

相关文章:

javascript - 在 javascript 正则表达式字符类中转义正斜杠?

ruby-on-rails - 仅使用 Rails pluralize helper 将强样式应用于数字

ruby - "Nullify"ruby​​ 中的一个变量

escaping - 如何在 Ansible lineinfile 模块中转义 '#' 注释字符?

formatting - 引用 YAML(对于 Travis CI)

javascript - 如何将字符串中的 html 呈现为 html

Ruby 的变量交换 : x, y = y,x -- 数组引用似乎更慢?

ruby-on-rails - 将自定义字段添加到 ROR 应用程序中的对象

在 C 中构造参数以使用可变数量的参数调用 Ruby C 扩展

C#:如何用\替换\\