簡體   English   中英

從任何路徑替換紅寶石中的正斜杠到反斜杠

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM