如何用“#”分割字符串并将结果存储在数据表中

use*_*314 1 c# asp.net split

我有这个字符串:

1#3.doc#0.036/n
2#1.doc#0.026/n
Run Code Online (Sandbox Code Playgroud)

我想将其拆分#并像这样将每一行放在DataTable中的一行中:

1    3.doc  0.036
2    1.doc  0.026
Run Code Online (Sandbox Code Playgroud)

我有一个这样的数据表:

DataTable table = new DataTable();
table.Columns.Add("Id", typeof(int));
table.Columns.Add("FileName", typeof(string));
table.Columns.Add("Content", typeof(string));
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

dat*_*ata 5

这是将字符串拆分为几行,然后将这些行拆分为不同部分的方法。

您的字符串首先被换行符分割\n成一个行数组string[]

然后,将这些线一一分成Split('#')

最后,这些部分与您创建的列一起添加到您的表中。

记住要保存创建的列,不要忘记将新创建的行添加到表中。

DataTable table = new DataTable();
DataColumn colID = table.Columns.Add("Id", typeof(int));
DataColumn colFileName = table.Columns.Add("FileName", typeof(string));
DataColumn colContent = table.Columns.Add("Content", typeof(string));

string source = "1#3.doc#0.036\n2#1.doc#0.026\n";

string[] lines = source.Split('\n');

foreach(var line in lines)
{
    string[] split = line.Split('#');

    DataRow row = table.NewRow();

    row.SetField(colID, int.Parse(split[0]));
    row.SetField(colFileName, split[1]);
    row.SetField(colContent, split[2]);

    table.Rows.Add(row);
}
Run Code Online (Sandbox Code Playgroud)

row["FileName"] = data也可以使用将数据添加到行中,但是如果更改列的名称,这将中断,而对列对象的引用由编译器和IDE检查。另外本文介绍如何创建一个类型化的DataTable,这是你可能想要做的事。