经过大量的研究和头脑风暴后,我终于放弃了,需要帮助将转发速度转换为单反斜杠但是我无法做到。
以下是我遵循的一些步骤,但它不起作用
if let loadedNavButtons: NavigationButtonsView = NSView.loadFromNib(nibName: "NavigationButtonsView", owner: self) as? NavigationButtonsView {
// Do whatever you want with loadedNavButtons
}
我期望的结果应该是:
"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"
接受任何帮助和建议请帮助
答案 0 :(得分:4)
你已经这样做了:
"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
答案 1 :(得分:3)
你在第一个例子中得到的正是你所需要的。在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 确实理解带正斜杠的路径,因此您可能根本不需要这种转换。