我想寫兩個功能escape(text, delimiter)
和unescape(text, delimiter)
具有以下屬性:什麼是逃避單個角色的最簡單算法?
的
escape
的結果不包含delimiter
。unescape
是escape
反向,即unescape(escape(text, delimiter), delimiter) == text
爲
text
所有的值和delimiter
它是行限制的delimiter
允許值。
背景:我想創建值的分隔符分隔的字符串。爲了能夠再次從字符串中提取出相同的列表,我必須確保單獨的字符串不包含分隔符。
我已經試過:我想出了一個簡單的解決方案(僞代碼):
escape(text, delimiter): return text.Replace("\", "\\").Replace(delimiter, "\d")
unescape(text, delimiter): return text.Replace("\d", delimiter).Replace("\\", "\")
但發現財產2失敗的測試字符串"\d<delimiter>"
。目前,我有以下工作液
escape(text, delimiter): return text.Replace("\", "\b").Replace(delimiter, "\d")
unescape(text, delimiter): return text.Replace("\d", delimiter).Replace("\b", "\")
這似乎工作,只要delimiter
不\
,b
或d
(這是很好的,我不想使用那些作爲分隔符反正)。但是,由於我沒有正式證明其正確性,恐怕我錯過了其中一個屬性被侵犯的情況。由於這是一個常見問題,我假設已經有一個「衆所周知的證明正確」的算法,因此我的問題(見標題)。
轉義?可靠,簡單和快速?大聲笑。 – Will
可靠,簡單,快速轉義有什麼問題? –