簡體   English   中英

如何用“#”分割字符串並將結果存儲在數據表中

[英]How to split string by “#” and store result in a DataTable

我有這個字符串:

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));

我怎樣才能做到這一點?

這是將字符串拆分為幾行,然后將這些行拆分為不同部分的方法。

您的字符串首先由新的行字符\\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中是不值得的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM