我想从文本文件中读取由新行分隔的文本块,但块中的行数不一致。我认为ReadLine方法跳过换行符(如果我错了,请纠正我)。一个文本文件的C#查询(从文本文件读取)
例子:
asdlkf dfadfj adfasdf
asdfaf asdfjaslfk asdfjasldf
asdfajsdf
slfasdf
asdfasdf
adssdfas;
asdfasdfj
asdfasdf
asdfasdf
我想从文本文件中读取由新行分隔的文本块,但块中的行数不一致。我认为ReadLine方法跳过换行符(如果我错了,请纠正我)。一个文本文件的C#查询(从文本文件读取)
例子:
asdlkf dfadfj adfasdf
asdfaf asdfjaslfk asdfjasldf
asdfajsdf
slfasdf
asdfasdf
adssdfas;
asdfasdfj
asdfasdf
asdfasdf
(我假设一个块是一组的TE xt空行分隔。我不完全清楚你的问题。)
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",
};
谢谢你,我的好先生。 – lxrem03
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(这将阻止你获得你不需要额外的蠢行)和然后.Split被分裂\ r转换到一个阵列,其中所述“输入”将是
对不起对于这个例子,我并不好的xD:P
你试过'File.ReadAllLines()'? –
我已经使用File.ReadLines()。 ReadAllLines()是否在包含空格(换行符)的文本中读取everyline,因为我需要确定文本块在哪里开始和结束,以便我可以将每个文本块存储到数组或某种类型。 – lxrem03