1

テキスト ファイルからデータを取得して並べ替え、古いデータを新しく並べ替えたデータで上書き保存する必要があります。テキスト ファイルの形式は次のとおりです。

Dog

Cow

Sheep

テキストをリストに読み込んで sort メソッドを呼び出すと、次のようになります。

""
""
""
Cow
Dog
Sheep

それは私が望むものではありません。.Sort() が空白を無視する方法はありますか、またはこの問題に別の方法でアプローチする必要がありますか?

編集ファイルに保存するときに空の行が必要です。出力は

Cow 

Dog

Sheep 
4

3 に答える 3

5

Linqを使用します。以下が機能するはずです:

string[] myText = File.RealAllLines("yourfile.txt");
var sortedWithoutEmptyLines = myText
     .Where(t=> !string.IsNullOrEmpty(t))
     .OrderBy(s=>s)
     .Select(i => string.Concat(i, Environment.NewLine)); //Adding extra linebreak as asked
File.WriteAllLines("yourfile.txt", sortedWithoutEmptyLines.ToArray());
于 2012-10-02T19:33:28.877 に答える
2

List代わりに、スペース以外の文字列のみを使用して別の文字列を作成し、それを並べ替えることをお勧めします。時間を節約できるだけでなく(「実際の」文字列の各ペアの間に空のスペースがある場合は、基本的に理由もなくデータを2倍にソートします)、書き込みがはるかに簡単になります。

于 2012-10-02T19:30:36.713 に答える
2
string[] lines = File.ReadAllLines("yourInputFile.txt");
var outputData = lines
        .Where(line => !string.IsNullOrEmpty(line)) //remove empty lines
        .OrderBy(item => item)
        .Select(line => line + Environment.NewLine); //add them back in
File.WriteAllLines("yourOutputFile.txt", outputData.ToArray());

空行をすべて取り出し、並べ替えを行ってから、元に戻します。

于 2012-10-02T19:41:01.870 に答える