如何按"#"分割字符串并将结果存储在DataTable中

本文关键字:quot 存储 结果 DataTable 字符 何按 分割 字符串 串并 | 更新日期: 2023-09-27 18:11:29

我有这个字符串:

1#3.doc#0.036/n
2#1.doc#0.026/n

我想在#上分割它,并将每一行放在DataTable内的单行中这样的:

1    3.doc  0.036
2    1.doc  0.026

我有一个这样的数据表:

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

我该怎么做呢?

如何按"#"分割字符串并将结果存储在DataTable中

将字符串分成行,然后将这些行分成不同的部分。

您的字符串首先被新的行字符'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);
}

row["FileName"] = data向行添加数据也是可能的,但是如果您更改列的名称,这将中断,而对列对象的引用由编译器和IDE检查。本文还解释了如何创建类型的DataTable,这是您可能想要做的事情。

var stuff = someString.Split(''n')
    .Select(r => r.Split('#')
    .Select(a => new
        {
            Id = int.Parse(a[0]),
            FileName = a[1],
            Content = a[2]
        })
    .ToList();

这将给您一个匿名类型的IList。不值得放在DataTable