我需要从文本文件中提取数据,对其进行排序,然后使用新排序的数据保存旧数据。以下是文本文件的格式:
Dog
Cow
Sheep
如果我将文本读入列表,然后调用sort方法,我得到:
""
""
""
Cow
Dog
Sheep
这不是我想要的。有没有办法让.Sort()忽略空格,或者我应该以不同的方式处理这个问题?
编辑当我保存回文件时,我需要空行。输出应为
Cow
Dog
Sheep
答案 0 :(得分: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());
答案 1 :(得分:2)
我建议您只使用非空格字符串构建另一个List
并对其进行排序。您不仅可以节省时间(如果每对“真实”字符串之间有空格,您基本上无理由地对数据进行排序),但写入起来会更简单。
答案 2 :(得分: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());
只需取出所有空行,进行排序,然后将它们放回去。