2014-02-08 52 views
4

Lua中是否有與Python的repr()函數等價的函數?換句話說,一個函數使用\ x打印不可打印字符,其中x是n或b等,如果不是Lua字符串轉義字符,則使用\ 000代碼。我GOOGLE了,找不到任何東西。很多關於將非printable放入字符串的信息,關於使用不可打印的字符生成字符串的可打印版本沒有任何意義。lua相當於python repr

回答

5

最接近的等效爲string.format%q選項。

q選項格式化雙引號之間的字符串,必要時使用轉義序列以確保它可以安全地由Lua解釋器讀回。例如,呼叫

string.format('%q', 'a string with "quotes" and \n new line') 

可能產生的字符串:

"a string with \"quotes\" and \ 
    new line" 

你會發現,新線沒有轉換成字符對\n。如果您喜歡,請嘗試以下功能:

function repr(str) 
    return string.format("%q", str):gsub("\\\n", "\\n") 
end