1

フラット ファイル内のタブを置き換える「ユニット セパレータ」のメタ文字を見つけるのに苦労しています。

これまでのところ、私はこれを持っています:

File.WriteAllLines(outputFile,
    File.ReadLines(inputFile)
    .Select(t => t.Replace("\t", "\0x1f")));  //this does not work

私も試しました:

File.WriteAllLines(outputFile,
    File.ReadLines(inputFile)
    .Select(t => t.Replace("\t", "\u"))); //also doesn't work

File.WriteAllLines(outputFile,
    File.ReadLines(inputFile)
    .Select(t => t.Replace("\t", 0x1f)));  //also doesn't work

パラメータとして hex を正しく使用するにはどうすればよいですか? また、「ユニットセパレーター」のメタキャラクターは何ですか?

4

3 に答える 3

3

単位区切りのメタ文字は

U+001f

あなたはそれを次のように使用できるはずです

File.WriteAllLines(outputFile,
File.ReadLines(inputFile)
.Select(t => t.Replace("\t", "\u001f")));

編集: 制御文字についての議論が起こり始めたので、後世のためにこの定義を追加します。

関数、イベント、操作、または制御操作を開始、変更、または終了する特殊な非印刷文字。ASCII 文字セットは、32 の制御文字を定義します。もともと、これらのコードはテレタイプ マシンを制御するために設計されました。しかし現在では、ディスプレイ モニター、プリンター、およびその他の最新のデバイスを制御するためによく使用されます。

ここから。

また、ここにユニットセパレーターの説明があります

データベースに格納される最小のデータ項目は、ASCII 定義では単位と呼ばれます。それらをフィールドと呼びます。単位区切り記号は、シリアル データ ストレージ環境でこれらのフィールドを区切ります。現在のほとんどのデータベース実装では、ほとんどの型のフィールドが固定長である必要があります。ほとんどの場合、これが必要ない場合でも、各フィールドの可能な最大メンバーを格納するのに十分なスペースがレコードに割り当てられます。これは、多くの状況で大量のスペースを必要とします。US 制御コードでは、すべてのフィールドを可変長にすることができます。60 年代のようにデータ ストレージ スペースが限られている場合、これは貴重なスペースを確保するための良い方法です。一方、シリアルストレージは、現代のテーブル駆動型 RAM およびディスク実装よりもはるかに効率的ではありません。できます'

ここから。

于 2015-08-11T16:30:15.430 に答える
0

C# で Unicode 文字をエンコードする正しい方法は、この形式を使用することだと思い\unnnnます。\u001f次のように、 string に置き換えてみてください。

File.WriteAllLines(outputFile,
    File.ReadLines(inputFile)
    .Select(t => t.Replace("\t", "\001f")));

それは動作しますか?

于 2015-08-11T16:30:31.077 に答える