解析文本行

2 .net c# parsing text

我有成千上万的文本文件,每个文件只包含一行文本.

任何单个文件如下所示:

somevalue1|somevalue2|somevalue3|somevalue4|somevalue5
Run Code Online (Sandbox Code Playgroud)

格式永远不会改变,从上面,您可以看到每个值如何用"|"分隔.并且每个文件中始终有5个值.

有人可以帮我正确的方向吗?我不知道如何将每个值提取到一个单独的字符串中,例如:

string value1,value2,value3,value4,value5;
value1=somevalue1;
value2=somevalue2; 
Run Code Online (Sandbox Code Playgroud)

等等

我希望这是有道理的.并感谢任何帮助

谢谢

Fre*_*örk 10

String.Split 为你这样做:

string line = "somevalue1|somevalue2|somevalue3|somevalue4|somevalue5";
string [] parts = line.Split(new[] { '|' });
Run Code Online (Sandbox Code Playgroud)

然后,您可以从该数组中读取单独的值:

string value1 = parts[0];
string value2 = parts[1];
// and so on
Run Code Online (Sandbox Code Playgroud)

现在我可能略微偏离主题,但我假设不同的值具有不同的含义,以便它们可以被视为表中的列?如果是这种情况,我可能有意义创建一个以更易被发现的形式公开这些值的类.让我们假设五个值是宠物独角兽的名字,姓氏,公司,喜欢的颜色名字.然后你可以创建以下类:

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Company { get; set; }
    public string FavoriteColor { get; set; }
    public string NameOfPetUnicorn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...然后你会把这行中的值放到像这样的人身上:

private static Person GetPerson(string line)
{
    string [] parts = line.Split('|'); // as per Dan Tao's suggestion
    return new Person {
        FirstName = parts[0],
        LastName = parts[1],
        Company = parts[2],
        FavoriteColor = parts[3],
        NameOfPetUnicorn = parts[4]
    };
}
Run Code Online (Sandbox Code Playgroud)

  • 你也可以简单地写:`line.Split('|')`(因为分隔符是`params`参数). (7认同)