我想从文本文件中读取一个由新行分隔的文本块,但块中的行数不一致。我认为ReadLine方法会跳过换行符(如果我错了,请纠正我)。
文本文件示例:
asdlkf dfadfj adfasdf
asdfaf asdfjaslfk asdfjasldf
asdfajsdf
slfasdf
asdfasdf
adssdfas;
asdfasdfj
asdfasdf
asdfasdf
答案 0 :(得分:0)
string[] s = File.ReadAllText(FileLocation).Replace("\r", "").Split('\n');
for(int i =0; i < s.Length; i++)
MessageBox.Show(s[i]);//This will display each line in a message box.
这将读取文件的所有文本然后删除\ r \ n(这将阻止您获得您不需要的愚蠢额外行)然后.Split将\ r分割成一个数组,其中&#34;输入&#34;会是
对不起这个例子我不太好xD:P
答案 1 :(得分:0)
(我假设一个块是一组由空行分隔的文本。根据你的问题我还不完全清楚。)
File.ReadAllLines()
也可以正常工作......但是这里有你如何使用迭代器模式。
public static IEnumerable<string> GetBlocks(string filename)
{
using (var reader = new StreamReader(filename))
{
var sb = new StringBuilder();
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
if (string.IsNullOrWhiteSpace(line))
{
if (sb.Length != 0)
yield return sb.ToString();
sb.Clear();
}
else
sb.AppendLine(line);
}
if (sb.Length != 0)
yield return sb.ToString();
}
}
......用法......
var blocks = GetBlocks("fortunes.txt");
...结果......
blocks = new [] {
"asdlkf dfadfj adfasdf
asdfaf asdfjaslfk asdfjasldf
asdfajsdf",
"slfasdf
asdfasdf
adssdfas;
asdfasdfj",
"asdfasdf
asdfasdf",
};