拆分文本文件,其中信息以不同的行分隔

时间:2015-11-05 07:57:08

标签: file text split

所以,我有一个文本文件,其中信息由回车键分隔(我不知道如何解释,我会粘贴代码和一些东西)。

cha-cha
Fruzsina
Ede
salsa
Szilvia
Imre

以下是文本文件的外观,我需要将其分为三个部分,第一部分是舞蹈的类型,然后是舞者1和舞者2.

using System;
using System.Collections.Generic;
using System.IO;

namespace tanciskola
{
    struct tanc
    {
        public string tancnev;
        public string tancos1;
        public string tancos2;
    }
    class Program
    {

        static void Main(string[] args)
        {
            #region 1.feladat
            StreamReader sr = new StreamReader("tancrend.txt");
            tanc[] tanc = new tanc[140];
            string[] elv;
            int i = 0;
            while (sr.Peek() != 0)
            {
                elv = sr.ReadLine().Split('I don't know what goes here');
                tanc[i].tancnev = elv[0];
                tanc[i].tancos1 = elv[1];
                tanc[i].tancos2 = elv[2];
                i++;
            }
            #endregion
            Console.ReadKey();
        }
    }
}

以下是我试图解决它的方法,虽然我真的不知道应该怎么做。任务是展示第一支舞和最后一支舞,但为此我需要以某种方式分开它。

2 个答案:

答案 0 :(得分:1)

正如我的评论中所提到的,您似乎有一个文本文件,其中每个项目都在一个新行上,一组3行构成一个单独的记录'。在这种情况下,您可以简单地读取文件的所有行,然后创建您的记录,如下所示:

var v = File.ReadLines("file path");

        tancr[] tanc = new tancr[140];

        for (int i = 0; i < v.Count(); i += 3)
        {                
            tanc[i/3].tancnev= v.ElementAt(i);
            tanc[i/3].tancos1 = v.ElementAt(i + 1);
            tanc[i/3].tancos2 = v.ElementAt(i + 2);
        }

注意:当文件大小很大时,ReadLines()会更好。如果您的文件较小,则可以改为使用ReadAllLines()

答案 1 :(得分:0)

按&#34;分割输入字符&#34;你可以在.NET中使用Environment.NewLine:

enter image description here

elv = sr.ReadAllText().Split(new string[] {Environment.NewLine}, StringSplitOptions.None);

此常量将包含特定于您的操作系统的序列(我猜测Windows)。

您应该知道,对于Windows与Linux / Unix,用于换行符的字符是不同的。因此,在极少数情况下,有人在不同的操作系统上编辑您的文件,您可能会遇到问题。

在Windows上,换行符是一个双字符序列:回车符+换行符(ASCII 13 + 10)。在Linux上它只是换行。因此,如果你想要更加聪明,你可以首先检查CRLF,如果你只从Split()获得一个元素,那么试试LF。