![](/img/trans.png)
[英]Rails 5 Custom Routes: how to create custom path and replace %2F with forward slash
[英]Replace of forward slash to backslash in ruby from any path
经过大量研究和头脑风暴,我最终放弃了,需要帮助将正斜杠转换为单个反斜杠,但是我无法做到。
这是我遵循的一些步骤,但是没有用
"C:/projects/test/code".gsub('/','\\') => "C:\\projects\\test\\code"
"C:/projects/test/code".gsub('/','\\\\') => "C:\\projects\\test\\code"
"C:/projects/test/code".gsub('/',"\'\\'") => "C:'projects/test/codeprojects'test/codetest'codecode"
我期望的结果应该是:
=> "C:\projects\test\code"
任何帮助和建议接受请帮助
您已经通过以下方法做到了:
"C:/projects/test/code".gsub('\', '\\') # => "C:\\projects\\test\\code"
您可能会对输出中的\\\\感到困惑。 这是正常的。 只要尝试把这个:
puts "C:/projects/test/code".gsub(/\//, '\\') # => C:\projects\test\code
更新:
\\在Ruby中(且不仅限于)用于多行字符串连接,因此,例如,当您仅在irb中键入它时,它将继续读取用户的输入。
关于irb的一些注意事项:
当您在irb中执行某些命令时,它会输出结果以进行调试:
irb> "foo\r\nbar"
=> "foo\r\nba"
该行包含\\ r \\ n,这意味着转到新的新行的开头。 因此,如果您想在人工模式下观看它,只需打印它即可:
irb> puts "foo\r\nbar"
foo
bar
如果要防止输出,可以使用分号:
irb> s = "foo\r\nbar";
irb* puts s
foo
bar
您在第一个示例中得到的正是您所需要的。 在IRB / Pry中,表示形式有所不同,因为REPL旨在支持复制粘贴,并且您看到的字符串是带有单反斜杠的确切字符串,即如何在双引号中键入它。 您可能还会注意到REPL表示形式中的字符串周围有双引号,它们也不属于字符串本身 。
这是完成任务的另一种更明确的方法:
result = "C:/projects/test/code".split('/').join('\\')
#⇒ "C:\\projects\\test\\code"
看到:
puts result
#⇒ C:\projects\test\code
result.count("\\")
#⇒ 3
实际上,Windows 确实确实知道带有正斜杠的路径,因此您可能根本不需要这种转换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.