Назначить строку в многомерный массив

1

Предположим, что у меня ниже строки

[["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"}
                  }
  • 0
    Вы должны проанализировать вашу строку и собрать необходимые данные.
  • 0
    разделить , а затем заменить [ и ]
Показать ещё 4 комментария
Теги:
arrays
multidimensional-array

2 ответа

0
Лучший ответ

Атака грубой силы, возможно, лучшие решения доступны

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();                            
}
  • 0
    Что если я разделю на ,[ а затем просто заменю остальные [ и ] ? Что ты сказал!
  • 0
    Да, возможно, но тогда вы должны убрать двойные квадратные скобки в начале и в конце входов, а не большое усиление. Например, эта единственная строка может заменить первые два var temp = input.Split(new string[] {",["}, StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim(new char[] {'[', ']'}));
Показать ещё 3 комментария
0
string inputString; //Your original string
inputString=inputString.Replace('[',' '); //Removes left bracket
inputString=inputString.Substring(0,inputString.Count()-2); //Removes last two right brakets
var arrayOfStrings=inputString.Split(']'); //Split on right bracket
for(int i=1; i < arrayOfStrings.Count() -1; i++){
    arrayOfStrings[i]=arrayOfStrings[i].Substring(1); //Removes the "," at the start of the 2nd to the n-1th elements
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню