所以,我有一个文本文件,其中信息由回车键分隔(我不知道如何解释,我会粘贴代码和一些东西)。
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();
}
}
}
以下是我试图解决它的方法,虽然我真的不知道应该怎么做。任务是展示第一支舞和最后一支舞,但为此我需要以某种方式分开它。
答案 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:
elv = sr.ReadAllText().Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
此常量将包含特定于您的操作系统的序列(我猜测Windows)。
您应该知道,对于Windows与Linux / Unix,用于换行符的字符是不同的。因此,在极少数情况下,有人在不同的操作系统上编辑您的文件,您可能会遇到问题。
在Windows上,换行符是一个双字符序列:回车符+换行符(ASCII 13 + 10)。在Linux上它只是换行。因此,如果你想要更加聪明,你可以首先检查CRLF,如果你只从Split()获得一个元素,那么试试LF。