[英]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.