2013-12-10 44 views
0

如何使紅寶石pp功能輸出字符串在有效(可解析)如果可能的話使用單引號的Ruby字符串?紅寶石PrettyPrint在單引號

rows = [{name:'test',id:'182572'},{name:"Kal'el",id:'125125'}] 
require 'pp' 
pp rows 

產量爲:

[{:name=>"test", :id=>"182572"}, {:name=>"Kal'el", :id=>"125125"}] 

期望的輸出是:

[{:name=>'test', :id=>'182572'}, {:name=>"Kal'el", :id=>'125125'}] 

(是有可能使用單引號字符串內的報價單引號?)

沒關係,我找到答案,因爲我對薩瓦答案的編輯已被拒絕,我會把它放在這裏:

class String 
    alias :old_inspect :inspect 
    def inspect 
    return old_inspect if self.include? "'" 
    "'#{self}'" 
    end 
end 

回答

2

你不能。解析後的字符串不是雙引號或單引號,它們只是字符串。如果您希望字符串以單引號出現,則必須編寫您自己的打印功能。

1

重新定義String#inspect

class String 
    def inspect; "'#{self}'" end 
end 
+0

不要忘了改回來之後,或所有字符串都將在該方案的範圍拉閘用雙引號〜 – 2013-12-10 03:21:10

+0

但它錯誤地顯示當在字符串中單引號.. – Kokizzu

+0

@Kokizzu什麼你的意思是不正確的?你需要明確說明。 – sawa