聲明:我知道,在99%的情況下,你不應該「串行化」串聯字符串中的數據。什麼是String.Split的最佳特徵?
什麼燒焦你們在使用衆所周知的情況:
string str = userId +"-"+ userName;
在大多數情況下,我已經回落到| (管道),但在某些情況下,用戶甚至可以輸入。那麼「non」字符如☼(ALT + 9999)怎麼樣?
聲明:我知道,在99%的情況下,你不應該「串行化」串聯字符串中的數據。什麼是String.Split的最佳特徵?
什麼燒焦你們在使用衆所周知的情況:
string str = userId +"-"+ userName;
在大多數情況下,我已經回落到| (管道),但在某些情況下,用戶甚至可以輸入。那麼「non」字符如☼(ALT + 9999)怎麼樣?
這取決於太多的因素給出具體的答案。
首先,爲什麼是你這樣做?如果您覺得需要通過以這種方式組合它們來存儲userId
和userName
,則考慮替代方法,例如, CSV風格的報價或類似。其次,在正常情況下,只能使用不屬於字符串部分的分隔符。如果userId只是一個數字,那麼「 - 」沒問題......但如果數字可能是負數呢?
第三,這取決於你打算如何處理字符串。如果僅僅是記錄或者調試器或者其他形式的人類消費,那麼你可以放鬆一下,然後選擇一個看起來合適的分隔符。如果您打算存儲這樣的數據,使用一個分隔符比確保你能正確提取數據以後,無論userId
或userName
值的。如果你可以避開它,例如使用\0
。如果任一值來自不可信來源(即Internet),則確保分隔符不能用作任何字符串中的字符。一般情況下,您可以限制每個字符包含的字符,例如userId
的數字和userName
的字母,數字和一些標點符號。
Hmph ...是的\ 0很好。我並不是在尋找這樣做的完全萬無一失的方式(從提及 - 和|這是顯而易見的),只是很好奇人們推薦的建議以及與此相關的竅門。 – kape123 2012-04-22 07:10:14
如果是用於數據存儲和檢索,也沒有辦法保證用戶不會找到一種方式來注入你的分隔符到字符串。安全的事情是預處理輸入莫名其妙:
-
是特殊字符-
在輸入時遇到喜歡的東西-0
取代它。--
作爲定界符所以userid = "alpha-dog"
和userName = "papa--0bear"
將被轉換爲
alpha-0dog--papa-0-00bear
重要的是,你的方式要完全撤銷的,且用戶不應該無論他們輸入什麼,都能打破它。
本質上講,這是消毒的一個非常原始的版本。
你能解釋一下你爲什麼要這樣做?它聞起來像一個非常糟糕的主意。 – JohnFx 2012-04-22 06:55:18
假設我想加密一些數據並通過網絡將其通過HTTP發送到移動應用程序。我沒有時間去建立看中序列化框架,並希望儘快啓動和運行...即我做Context.Write器(Encrypt(「參數1 |參數2 |參數3」)) – kape123 2012-04-22 07:00:21
以下是使用一些指令輪子:http://www.c-sharpcorner.com/UploadFile/bipinjoshi/serializingObjectsinCS11102005234746PM/serializingObjectsinCS。aspx抱歉,沒時間聊天我正要睡覺。 – JohnFx 2012-04-22 07:08:44