C# 使用拆分并存储在数据表中
我正在研究如何拆分字符串并将信息存储在数据表中。我可以让拆分和存储正常工作,但问题在于我如何尝试使用拆分。这是我拥有的字符串的一个示例:C# 使用拆分并存储在数据表中,c#,asp.net,C#,Asp.net,我正在研究如何拆分字符串并将信息存储在数据表中。我可以让拆分和存储正常工作,但问题在于我如何尝试使用拆分。这是我拥有的字符串的一个示例: itemid/n3,itemid/n4 itemid是项目的唯一id,在/n是用户选择的项目数量之后,逗号分隔项目 我有这样一个数据表: DataTable table = new DataTable(); table.Columns.Add("id", typeof(int)); table.Columns.Add("count", typeof(int
itemid/n3,itemid/n4
itemid是项目的唯一id,在/n是用户选择的项目数量之后,逗号分隔项目
我有这样一个数据表:
DataTable table = new DataTable();
table.Columns.Add("id", typeof(int));
table.Columns.Add("count", typeof(int));
我希望能够在逗号处拆分字符串,然后将每个值存储在数据表中,使它们显示在同一行上(在/n处拆分)。有没有一种简单的方法可以使用拆分实现这一点?或者我最好换一种方式来做是的,你可以先用逗号分开,然后用/n分开:
foreach(var row in myString.Split(','))
{
var fields = row.Split(new string[] { "/n" },
StringSplitOptions.None);
// fields[0] is ID, fields[1] is count
}
这仍然是以线性时间执行的,因此它肯定是一种方式。是的,您可以先按逗号分割,然后按/n分割:
foreach(var row in myString.Split(','))
{
var fields = row.Split(new string[] { "/n" },
StringSplitOptions.None);
// fields[0] is ID, fields[1] is count
}
这仍然是以线性时间执行的,因此它肯定是一种方法。如果每个记录始终存在“/n”和“,”,您可以使用带有表达式“(?:/n |\,)”的正则表达式拆分,然后使用x+=2而不是x++在列表中循环。X将是ID,X+1将是值
string Input = "12/nTwelve,13/nThirteen,";
string[] InputSplit = Regex.Split(Input, @"(?:/n|\,)");
for(int i = 0 ; i < ((InputSplit.Length / 2) * 2) ; i+=2){
//Math in the middle helps when there's a trailing comma in the data set
Console.WriteLine(string.Format("{0}\t{1}", InputSplit[i], InputSplit[i+1]));
}
string Input=“12/nTwelve,13/nThirteen,”;
字符串[]InputSplit=Regex.Split(输入@“(?:/n|\,)”;
对于(inti=0;i<((InputSplit.Length/2)*2);i+=2){
//Maple在中间有助于在数据集中有尾逗号。
Console.WriteLine(string.Format(“{0}\t{1}”,InputSplit[i],InputSplit[i+1]);
}
如果每条记录始终存在“/n”和“,”,则可以使用带有表达式“(?:/n |\,)”的正则表达式拆分,然后使用x+=2而不是x++在列表中循环。X将是ID,X+1将是值
string Input = "12/nTwelve,13/nThirteen,";
string[] InputSplit = Regex.Split(Input, @"(?:/n|\,)");
for(int i = 0 ; i < ((InputSplit.Length / 2) * 2) ; i+=2){
//Math in the middle helps when there's a trailing comma in the data set
Console.WriteLine(string.Format("{0}\t{1}", InputSplit[i], InputSplit[i+1]));
}
string Input=“12/nTwelve,13/nThirteen,”;
字符串[]InputSplit=Regex.Split(输入@“(?:/n|\,)”;
对于(inti=0;i<((InputSplit.Length/2)*2);i+=2){
//Maple在中间有助于在数据集中有尾逗号。
Console.WriteLine(string.Format(“{0}\t{1}”,InputSplit[i],InputSplit[i+1]);
}
注意,在这个示例中,我更改了第一列的类型,正如在提供的示例字符串中一样,id是一个字符串
DataTable table = new DataTable();
table.Columns.Add("id", typeof(string));
table.Columns.Add("count", typeof(int));
var str = "itemid/n3,itemid/n4";
var items =
str.Split(',').Select(
r =>
new
{
Id = r.Split(new[] {"/n"}, StringSplitOptions.RemoveEmptyEntries).First(),
Count = int.Parse(r.Split(new[] {"/n"}, StringSplitOptions.RemoveEmptyEntries).Last())
});
foreach (var item in items)
{
var row = table.NewRow();
row["id"] = item.Id;
row["count"] = item.Count;
}
注意,对于这个示例,我更改了第一列的类型,如在提供的示例字符串中,id是一个字符串
DataTable table = new DataTable();
table.Columns.Add("id", typeof(string));
table.Columns.Add("count", typeof(int));
var str = "itemid/n3,itemid/n4";
var items =
str.Split(',').Select(
r =>
new
{
Id = r.Split(new[] {"/n"}, StringSplitOptions.RemoveEmptyEntries).First(),
Count = int.Parse(r.Split(new[] {"/n"}, StringSplitOptions.RemoveEmptyEntries).Last())
});
foreach (var item in items)
{
var row = table.NewRow();
row["id"] = item.Id;
row["count"] = item.Count;
}
这可能比我的解决方案优雅得多。但是,当无法保证数据始终具有两个分隔符时,您的解决方案才是正确的,所以您没有错!工作起来很有魅力,是的,输入总是相同的格式。这可能比我的解决方案优雅得多。当数据不能保证总是有两个分隔符时,您的解决方案是正确的,所以您没有错!工作起来很有魅力,是的,输入总是相同的格式