Как получить массив из строки - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть жало типа int

[[1, 2],[2, 3, 4, 6],[4, 5, 6],8]

Как преобразовать эту строку в список или массив, подобный этому

int[] a = { 1, 2 };
int[] b = { 2, 3, 4,6 };
int[] c = { 4, 5, 6 };
int d = 8;

Я могу получить только 1 строку

using (var streamReader = new StreamReader(dataFromFile, Encoding.UTF8))
        {
            string line;
            while ((line = streamReader.ReadLine()) != null)
            {
                list.Add(line);
            }
        }
       //list.count = 1

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Вы можете использовать Linq, например следующий код:

string input = "[[1, 2],[2, 3, 4, 6],[4, 5, 6],8]";

List<int[]> listOfArray = 
 // replace "[" by empty
 input.Replace("[", "")
    //split first by "]," and substring by "]"
    .Split(new string[] { "],", "]" }, StringSplitOptions.RemoveEmptyEntries)
    // split by ",", and convert string to int
    .Select(x => x.Split(',').Select(y => int.Parse(y)).ToArray())
    .ToList();

Надеюсь, эта помощь

0 голосов
/ 08 апреля 2020

Вы можете попробовать что-то вроде этого, это довольно примитивный способ сделать это, я уверен, что использование LINQ или что-то подобное будет быстрее; но в настоящее время я не могу придумать какой-то способ (радости от работы)

var myArray = "[[1, 2],[2, 3, 4, 6],[4, 5, 6],8]";
        myArray = myArray.Remove(0, 1);
        myArray = myArray.Remove(myArray.Length-1);

        var test = myArray.Split(']');

        var myList = new List<List<int>>();

        foreach(var t in test) {
            var newString = t.Replace("[", "");
            newString = newString.Replace(",", "");
            var internalList = new List<int>();

            foreach(var ch in newString) {
                if(ch != ' ') {
                    var result = Convert.ToInt32(ch.ToString());
                    internalList.Add(result);
                }
            }

            myList.Add(internalList);
        }

Итак, теперь у вас есть список списков длиной 4 (то есть он имеет 4 списка внутри него), и вы можете легко перебирать упомянутые списки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...