为什么两次看跌期权的结果不同?
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/