免責事項:99%のケースで、連結された文字列内のデータを「シリアル化」しないでください。String.Splitの最高の文字は何ですか?
あなたたちは、よく知られている状況で使用何文字:私は戻って下落している大多数の場合には
string str = userId +"-"+ userName;
を| (パイプ)を使用していますが、ユーザーはそれを入力することもあります。 ☼(ALT + 9999)のような "タイプできない"文字はどうでしょうか?
免責事項:99%のケースで、連結された文字列内のデータを「シリアル化」しないでください。String.Splitの最高の文字は何ですか?
あなたたちは、よく知られている状況で使用何文字:私は戻って下落している大多数の場合には
string str = userId +"-"+ userName;
を| (パイプ)を使用していますが、ユーザーはそれを入力することもあります。 ☼(ALT + 9999)のような "タイプできない"文字はどうでしょうか?
これは、具体的な回答をするには余りにも多くの要素に依存します。
まず、なぜがになるのですか? userId
とuserName
をこのように組み合わせて保存する必要があると感じる場合は、別の方法、たとえばCSV形式の引用符または同様のもの。
第2に、通常の状況では、文字列の一部ではない区切り文字のみを使用する必要があります。 userIdが単なる数字の場合、 " - "は問題ありませんが、数値が負の場合はどうなりますか?
第3に、それはあなたが文字列で何をするかによって異なります。単純にロギングやデバッガなどの人間の消費のためのものであれば、ちょっとリラックスして、適切なデリミタを選択するだけです。このようなデータを格納する場合は、userId
またはuserName
の値に関係なく、後でデータを正しく抽出できるように区切り記号を使用してください。あなたがそれを手放すことができるなら、例えば\0
を使用してください。いずれかの値が信頼できないソース(インターネットなど)からのものである場合は、どちらの文字列でも区切り文字を文字として使用できないようにしてください。通常は、それぞれの文字には、userId
の数字と、userName
の文字、数字、および一部の句読点が含まれます。
Hmph ... yeah \ 0は問題ありません。私はこれを行うことの完全に確実な方法を探しているわけではありません。(これは - と|から明らかです)、人々が推薦するものをお勧めしています。 – kape123
データの保存と取得のためのものであれば、ユーザーが区切り記号を文字列に挿入する方法を見つけられないことを保証する方法はありません。行うための安全な事は何とか前処理入力されている:
-0
のようなものと交換し、-
を入力する際に遭遇した場合-
特殊文字--
あなたの区切りのでuserid = "alpha-dog"
とuserName = "papa--0bear"
は重要なことは、あなたのスキームが完全に取り消し可能にする必要があるということであり、ユーザはすべきではないということ
alpha-0dog--papa-0-00bear
に変換されるように、彼らが何を入力しても、それを壊すことができます。
これは本質的には、墨塗りの非常に原始的なバージョンです。
なぜこれを行うのか説明できますか?それは本当に悪い考えのようなにおいがする。 – JohnFx
私はいくつかのデータを暗号化し、HTTPを使ってネットワーク経由でモバイルアプリに送信したいとしましょう。私は空想的なシリアライゼーションフレームワークをセットアップする時間がなく、できるだけ早く起動したいと思っています。つまり、Context.Write(Encrypt( "Param1 | Param2 | Param3"))を実行します) – kape123
ここでは、ホイール:http://www.c-sharpcorner.com/UploadFile/bipinjoshi/serializingObjectsinCS11102005234746PM/serializingObjectsinCS。申し訳ありませんが、私はベッドに出ているチャットする時間がありません。 – JohnFx