Ruby on rails 在ruby中从任意路径将正斜杠替换为反斜杠

Ruby on rails 在ruby中从任意路径将正斜杠替换为反斜杠,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,经过大量的研究和脑力激荡,我最终放弃了,需要帮助将正斜杠转换为单反斜杠,但我做不到 以下是我遵循的一些步骤,但不起作用 "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/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中(而不仅仅是在Ruby中)用于多行字符串连接,所以当您在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

你已经用这个做了:

"C:/projects/test/code".gsub('\', '\\') # => "C:\\projects\\test\\code"
您可能被输出中的\\弄糊涂了。这很正常。试着说:

puts "C:/projects/test/code".gsub(/\//, '\\') # => C:\projects\test\code
更新:

\在Ruby中(而不仅仅是在Ruby中)用于多行字符串连接,所以当您在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"
见:



事实上,Windows确实理解带有正斜杠的路径,因此您可能根本不需要这种转换。

您在第一个示例中得到的正是您所需要的。在IRB/Pry中,表示方式有所不同,因为REPL旨在支持复制粘贴,而您看到的字符串正是带有单反斜杠的字符串,如何在双引号内键入它。您可能还注意到REPL表示中字符串周围的双引号,它们也不属于字符串本身

以下是完成任务的另一种更明确的方式:

result = "C:/projects/test/code".split('/').join('\\')
#⇒ "C:\\projects\\test\\code"
见:



事实上,Windows确实理解带正斜杠的路径,因此您可能根本不需要此转换。

为什么我们需要提交?您能否解释一下,如果我通常执行此转换,它将不起作用。这是与puts合作的唯一原因是什么@user3309314“{”C:/projects/test/code“.gsub(/\/,'\\')}”我是如何用单个
put进行插值的“{%(C:/projects/test/code)。gsub(/\/,“\\”)}”
system“ln-s{%(C:/projects/test/code)。gsub(/\/,“\\”)}”这样的东西为什么我们需要放置?你能解释一下,如果我正常执行它,它不起作用吗。这是与puts合作的唯一原因是什么@user3309314“{”C:/projects/test/code.gsub(/\/,'\\'')}”我如何用单数
插入“{%(C:/projects/test/code).gsub(/\/,“\\”)}”
system“ln-s\{%(C:/projects/test/code).gsub(/\/,“\\”)诸如此类的东西你的问题不清楚。“它不工作”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?想要的行为是什么,为什么,观察到的行为是什么,它们有什么不同?@JörgWMittag让我为您更新它。您发布的前两个代码片段表明您的代码工作正常,所以我甚至不确定问题出在哪里。预期的结果不是合法的Ruby代码,所以我不确定您想要实现什么。您的问题还不清楚。“它不工作”不是一个足够精确的错误描述,我们无法帮助您。什么不起作用?它怎么不起作用?你的代码有什么问题?你收到错误信息了吗?错误消息是什么?你得到的结果不是你期望的结果吗?你期望得到什么样的结果?为什么?你会得到什么样的结果?两者有什么不同?你观察到的行为是否不是期望的行为?想要的行为是什么,为什么,观察到的行为是什么,它们有什么不同?@JörgWMittag让我为您更新它。您发布的前两个代码片段表明您的代码工作正常,所以我甚至不确定问题出在哪里。预期的结果不是合法的Ruby代码,所以我不确定您想要实现什么。