-1

メモを書いて.txtファイルに保存できるプログラムがあります。すべてのメモにはタイトルとテキストがあります。メモのタイトルは、「。txt」サフィックスのないファイル名です。したがって、私のプログラムには、すべてのメモのタイトルを含むリストボックスがあり、タイトルをクリックすると、メモを読むことができます。私の問題は、これらの文字でタイトルを書くことができないということです:\ /:*?"<>|ファイル名で許可されていないため。

どうすればこの問題を解決できますか?解決策は、ファイル名のみを含む新しい.txtファイルを作成し、行番号に基づいてファイル名をメモに関連付けることだと思いました。

より簡単な解決策はありますか?はいの場合、教えていただけますか?ありがとうございました!

4

4 に答える 4

2

個別のインデックスファイルの利点は、すべてのタイトルを簡単に取得できることです。欠点は、細心の注意を払わないと古くなる可能性があり、基盤となるファイルシステムへのアクセスを制限することです。

個人的には、各テキストファイルの最初の行をタイトルにし、ファイル名をサニタイズされたタイトルにしたいと思うかもしれません。つまり、実際のタイトルに非常に近いものを非常にすばやく表示できますが、ファイルを非同期ループして、実際のタイトルが異なる場合は更新するオプションがあります...つまり、ユーザーが入力したタイトルが「what <do ! そうです?" 彼らは「私は何をするのか」を非常に簡単に見るかもしれませんが、すぐに「何をするのか!私は何をするのですか?」に置き換えられます。-そして、インデックスファイルの損傷のリスクはありません。

于 2013-01-17T12:49:24.487 に答える
1

次のような独自の文字列を使用して、特殊文字の辞書を維持できます。

Dictionary<string, string> specialCharDictionary = new Dictionary<string, string>();
specialCharDictionary.Add("\\", "Slash");
specialCharDictionary.Add("/", "BSlash");
//....

次に、それを使用してファイル名を作成してアクセスします。

于 2013-01-17T12:40:19.900 に答える
0

ファイル名をbase-64でエンコードするか、ファイルをプレーンテキストではなくXMLにして、エンティティをエンコードすることができます。

于 2013-01-17T12:40:29.927 に答える
0

タイトルはユーザーから与えられたものですか?もしそうなら、タイトルを検証する簡単な方法があります。指定されたタイトルに禁止されている文字の1つが含まれているかどうかを確認してください。次に、それらを削除して削除された結果を使用するか、これらの文字が許可されていないことを示すエラーメッセージをユーザーに表示することができます。

この質問は、文字列内の特殊文字の検索に関する回答を提供します。お役に立てれば!

于 2013-01-17T12:41:44.263 に答える