12

特別なテキストファイルを処理するプログラムを書いています。これらのテキストファイルの一部は、SUB文字(置換文字。0x1Aの場合があります)で終わります。この文字を検出し、C#を使用してテキストファイルから削除するにはどうすればよいですか?

4

4 に答える 4

16

バイナリ データで実際に 0x1A であり、ASCII または UTF-8 ファイルとして読み取っている場合、.NET で読み取ると U+001A になるはずです。したがって、次のようなものを書くことができるかもしれません:

string text = File.ReadAllText("file.txt");
text = text.Replace("\u001a", "");
File.WriteAllText("file.txt", text);

この"\u001a"部分は単一の文字で構成される文字列であることに注意してください:\uxxxxは、指定された Unicode 値を 16 進数で表した単一の UTF-16 コード ポイントのエスケープ シーケンスです。

于 2012-08-17T21:18:04.303 に答える
2

最も簡単な答えは、おそらく正規表現です。

public static string RemoveAll(this string input, char toRemove)
{
   //produces a pattern like "\x1a+" which will match any occurrence
   //of one or more of the character with that hex value
   var pattern = @"\x" + ((int)toRemove).ToString("x") + "+";

   return Regex.Replace(input, pattern, String.Empty);
}

//usage
var cleanString = dirtyString.RemoveAll((char)0x1a);

はい、単に int を渡すこともできますが、それには文字の整数値を知る必要があります。char をパラメーターとして使用すると、リテラルまたは char 変数を簡単に指定できます。

于 2012-08-17T21:18:02.493 に答える
0

このようなことを試すこともできます

using (FileStream f = File.OpenRead("path\\file")) //Your filename + extension  
{
    using (StreamReader sr = new StreamReader(f)) 
    {
        string text = sr.ReadToEnd();
        text = text.Replace("\u001a", string.Empty);
    }
}
于 2012-08-17T21:19:58.467 に答える