![](/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.