C # Форматирование текстового файла символ за символом в 2D массив в графическом интерфейсе - PullRequest
0 голосов
/ 05 марта 2019

У меня есть текстовый файл:

Berzas, sula ;; sula ;; klevu saldial lapasula aila, ar suart zemes vaikai du

Мне нужно отформатироватьэто в 2D массив с [n, n] размерами.Это должен быть 2D-массив, я не могу использовать Список

Вот что я уже пробовал:

string file = File.ReadAllText(@"C:\Users\Justas\Desktop\L1\Rekursija\Trecias.txt");

int n = 0;

while (Math.Pow(n, 2) != file.Length)  
{
    n++;
}

string[,] array = new string[n, n];

var list = Enumerable
.Range(0, file.Length / n)
.Select(i => file.Substring(i * n, n))
.ToList();
var res = string.Join(Environment.NewLine, list);


for (int i = 0; i < n; i++)
{
    for (int j = 0; j < n; j++)
    {
        array[i, j] = res[i].ToString()[j].ToString();
    }
}

Я пытался добавить новую строку через каждые 9 позиций, а затем добавитьэто к двумерному массиву.

Это сообщение об ошибке:

Необработанное исключение: System.IndexOutOfRangeException: индекс находился за пределами массива.в System.String.get_Chars (индекс Int32) в ConsoleApp1.Program.Main (String [] args) в C: \ Users \ Justas \ Desktop \ Bandymas \ ConsoleApp1 \ Program.cs: строка 37

Ожидаемый результат:

Berzas,su
la;;sula;
;klevu sa
ldial lap
asula  a 
  aula, a
r  suart 
zemes vai
kai du   

1 Ответ

0 голосов
/ 05 марта 2019

Вы создаете список, затем снова конвертируете этот список в строку. Это неправильно.

В приведенном ниже коде я использовал значения списка и применил метод разделения для каждого элемента списка.

Затем я получаю все значения char и помещаю их в массив.

В последнем сегменте кода я печатаю результат массива. Вы можете проверить значения массива оттуда.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here
            Console.WriteLine("Hello, world!");
            string file = "Berzas,sula;;sula;;klevu saldial lapasula a aila, ar suart zemes vaikai du       ";
            int n = 0;
            while (Math.Pow(n, 2) != file.Length)  
            {
                n++;
            }

            string[,] array = new string[n, n];

            var list = Enumerable
            .Range(0, file.Length / n)
            .Select(i => file.Substring(i * n, n))
            .ToList();

            var res = string.Join(Environment.NewLine, list);
            for (int i = 0; i < n; i++)
            {
                char[] row = list[i].ToCharArray();
                for (int j = 0; j < n; j++)
                {
                    array[i, j] = row[j].ToString();
                }
            }

            int rowLength = array.GetLength(0);
            int colLength = array.GetLength(1);
            for (int i = 0; i < rowLength; i++)
            {
                for (int j = 0; j < colLength; j++)
                {
                    Console.Write(string.Format("{0}", array[i, j]));
                }
                Console.Write(Environment.NewLine);
            }

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