Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串分配到多维数组中_C#_Asp.net_Arrays_Multidimensional Array - Fatal编程技术网

C# 将字符串分配到多维数组中

C# 将字符串分配到多维数组中,c#,asp.net,arrays,multidimensional-array,C#,Asp.net,Arrays,Multidimensional Array,假设我有下面的字符串 [["Fri, 28 Mar 2014 01:00:00 +0000",0.402053266764,"1 sold"],["Thu, 03 Apr 2014 01:00:00 +0000",6.5,"1 sold"]]; 如何将这组字符串分配到数组中 预期结果: string[,] items = { { "Fri, 28 Mar 2014 01:00:00 +0000", "0.402053266764", "1 sold"}, { "Thu, 03 Apr 201

假设我有下面的字符串

[["Fri, 28 Mar 2014 01:00:00 +0000",0.402053266764,"1 sold"],["Thu, 03 Apr 2014 01:00:00 +0000",6.5,"1 sold"]]; 
如何将这组字符串分配到数组中

预期结果:

string[,] items = {
{ "Fri, 28 Mar 2014 01:00:00 +0000", "0.402053266764", "1 sold"},
{ "Thu, 03 Apr 2014 01:00:00 +0000", "6.5", "1 sold"}
                  }

如果是暴力攻击,可能会有更好的解决方案

string input ="[[\"Fri, 28 Mar 2014 01:00:00 +0000\",0.402053266764,\"1 sold\"],[\"Thu, 03 Apr 2014 01:00:00 +0000\",6.5,\"1 sold\"]]"; 
string temp = input.Replace("[", "");
string[] records = temp.Split(new char[] {']'}, StringSplitOptions.RemoveEmptyEntries);

string[,] output = new string[records.Length, 3];
int recno = 0;
foreach(string record in records)
{
    Console.WriteLine(record);
    string[] fields = record.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
    output[recno,0] = string.Join(",", fields[0], fields[1]);    
    output[recno,1] = fields[2];    
    output[recno,2] = fields[3];    
    recno++;
}

for(int x = 0; x <= output.GetUpperBound(0); x++)
{
    for(int y = 0; y <= output.GetUpperBound(1); y++)
        Console.Write("INDEX[" +x + "," + y +"]=" + output[x, y] + ";");
    Console.WriteLine();                            
}

您必须解析字符串并收集所需数据。拆分依据,然后替换[和]这组字符串存储在何处?@Rahul,由于其行包含的内容不起作用,也在单个部分中,它将拆分,但不会按照用户希望的方式拆分。例如,在他的帖子中显示的这一行不是分成两部分,而是分成七部分。如果我按[and]拆分,然后只替换[and]的其余部分,会怎么样?你说什么!是的,可能,但是你应该删除输入开始和结束处的双方括号,这不是一个很大的增益。例如,这一行可以替换前两个var temp=input.Splitnew string[]{,[},StringSplitOptions.removemptyEntries.Selectx=>x.Trimnew char[]{'[',']};正确,我同意。我总是对LINQ感到困惑,因为我现在试图学习它。你能建议一种简单/有效的方法来掌握LINQ/LAMDA表达式吗?谢谢。@Rahul我和你一样,我掌握的LINQ不够好,不能轻易给出建议。但是,有一种叫做LINQ的强大工具,它可以让你尝试并测试你的想法,而不需要太大和太长的时间efty Visual Studio。这就是我能提出的所有建议。建议就是建议;无论大小。谢谢你,史蒂夫。祝你周末愉快:
string input ="[[\"Fri, 28 Mar 2014 01:00:00 +0000\",0.402053266764,\"1 sold\"],[\"Thu, 03 Apr 2014 01:00:00 +0000\",6.5,\"1 sold\"]]"; 
string temp = input.Replace("[", "");
string[] records = temp.Split(new char[] {']'}, StringSplitOptions.RemoveEmptyEntries);

string[,] output = new string[records.Length, 3];
int recno = 0;
foreach(string record in records)
{
    Console.WriteLine(record);
    string[] fields = record.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
    output[recno,0] = string.Join(",", fields[0], fields[1]);    
    output[recno,1] = fields[2];    
    output[recno,2] = fields[3];    
    recno++;
}

for(int x = 0; x <= output.GetUpperBound(0); x++)
{
    for(int y = 0; y <= output.GetUpperBound(1); y++)
        Console.Write("INDEX[" +x + "," + y +"]=" + output[x, y] + ";");
    Console.WriteLine();                            
}