重複の可能性:
1 バイトの拡張 ASCII 値にエンコードする
C# では、文字列内の部分文字列を非印刷文字 (0xE0 を超えるバイト コードを持つ文字) に置き換えようとしています。反対の方向に進んでいる多くの質問を見てきました-つまり、文字列から印刷されない文字を削除しようとしていますが、印刷されていない文字を挿入しようとはしていません。以下のコード (正しく動作しません) は、私が今いる場所です:
string[] _symbol = {"Hello", "the", "man"};
string _source = "\"Hello, Hello,\" the man said.\n\"Hello,\" the woman replied.";
string _expect = "\"\xF3, \xF3,\" \xF2 \xF1 said.\n\"\xF3,\" \xF2 wo\xF1 replied.";
byte[] tblix = { 0xF3, 0x00 };
string _repl, _dest;
_repl = System.Text.Encoding.UTF8.GetString(tblix, 0, 1);
_dest = _source.Replace(_symbol[0], _repl);
tblix[0]--;
_repl = System.Text.Encoding.UTF8.GetString(tblix, 0, 1);
_dest = _dest.Replace(_symbol[1], _repl);
tblix[0]--;
_repl = System.Text.Encoding.UTF8.GetString(tblix, 0, 1);
_dest = _dest.Replace(_symbol[2], _repl);
bool check = (_dest == _expect);
File.WriteAllText("temp.dat", _dest);
_expect; と同等の文字列が _dest に生成されることを期待しています。ASCII エンコーディングを使用すると、印刷されない文字が「?」に戻ります。UTF8 も正しく動作しません。さらに、出力を 1 バイト文字のシーケンスとしてファイルに書き込む必要があるため、すべてをマルチバイト エンコーディングに変換するには、最終的には 1 バイト表現に戻す必要があります。私が達成しようとしていることを行う便利な方法はありますか? ご提案いただきありがとうございます。