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我建议您改为仅使用非空格字符串构建另一个并对其进行排序。您不仅可以节省时间(如果您在每对“真实”字符串之间有空格,那么您基本上会无缘无故地对数据进行双倍排序),而且编写起来会简单得多。

于 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 回答