Re: [問題] Ruby RegExpr 的疑惑

看板Ruby作者 (Bird)時間16年前 (2007/11/09 03:03), 編輯推噓5(504)
留言9則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《zhadow (zzz)》之銘言: : 我在 programming ruby 中看到 : puts '\\a\\b\\c'.gsub(/\\/,'\\\\') 的結果是 \a\b\c : 而不是 \\a\\b\\c : 看了書中的說明還是搞不清為什麼, : 請問原理是什麼呢? (update:下面的回答應該是錯誤的 詳見推文討論) 實驗了一下,應該是puts搞的鬼 puts和printf("%s", ...)會把escape character再解讀一次 irb(main):074:0> puts '\\a\\b\\c'.gsub(/\\/,'\\\\') \a\b\c=> nil irb(main):075:0> printf("%s", '\\a\\b\\c'.gsub(/\\/,'\\\\')) \a\b\c=> nil irb(main):076:0> p '\\a\\b\\c'.gsub(/\\/,'\\\\') "\\a\\b\\c"=> nil irb(main):077:0> '\\a\\b\\c'.gsub(/\\/,'\\\\') => "\\a\\b\\c" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.36.11

11/09 03:50, , 1F
應該不是哦
11/09 03:50, 1F

11/09 04:02, , 2F
p和 return value顯示的是string literals,而不是實際的值
11/09 04:02, 2F

11/09 13:04, , 3F
原來如此 @@ 怪不得我想不通
11/09 13:04, 3F

11/09 13:22, , 4F
不過為什麼要有這麼令人困惑的實作方式?
11/09 13:22, 4F

11/09 18:48, , 5F
可是我覺得上篇 LyinZ 的解釋才是對的耶
11/09 18:48, 5F

11/09 21:42, , 6F
他說的沒有錯,但我不知道這跟這問題有什麼關係?
11/09 21:42, 6F

11/09 22:20, , 7F
啊啊 我發現上篇才是對的 我錯了
11/09 22:20, 7F

11/09 22:20, , 8F
的確是輸出string literal的關係
11/09 22:20, 8F

11/09 22:20, , 9F
沒有在puts時把escape character再解讀一次這回事
11/09 22:20, 9F
※ 編輯: yzugsr 來自: 123.193.36.11 (11/09 22:21)
文章代碼(AID): #17CrrzDi (Ruby)
文章代碼(AID): #17CrrzDi (Ruby)