2016-07-26 83 views
-1

我想从文本文件中读取由新行分隔的文本块,但块中的行数不一致。我认为ReadLine方法跳过换行符(如果我错了,请纠正我)。一个文本文件的C#查询(从文本文件读取)

例子:

asdlkf dfadfj adfasdf 
asdfaf asdfjaslfk asdfjasldf 
asdfajsdf 

slfasdf 
asdfasdf 
adssdfas; 
asdfasdfj 

asdfasdf 
asdfasdf 
+1

你试过'File.ReadAllLines()'? –

+0

我已经使用File.ReadLines()。 ReadAllLines()是否在包含空格(换行符)的文本中读取everyline,因为我需要确定文本块在哪里开始和结束,以便我可以将每个文本块存储到数组或某种类型。 – lxrem03

回答

0

(我假设一个块是一组的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", 
}; 
+0

谢谢你,我的好先生。 – lxrem03

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(这将阻止你获得你不需要额外的蠢行)和然后.Split被分裂\ r转换到一个阵列,其中所述“输入”将是

对不起对于这个例子,我并不好的xD:P