C # Форматирование текстового файла символ за символом в 2D массив в графическом интерфейсе

У Lua нет встроенных локальных переменных потока, но вы можете использовать отдельную таблицу для каждого потока Lua для хранения локальных переменных потока и выяснить, какой поток работает с помощью coroutine.running (или lua_pushthread в C ). Затем сделайте его более удобным с metatables. Что-то вроде:

local _G, coroutine = _G, coroutine
local main_thread = coroutine.running() or {} -- returns nil in Lua 5.1
local thread_locals = setmetatable( { [main_thread]=_G }, { __mode="k" } )
local TL_meta = {}

function TL_meta:__index( k )
  local th = coroutine.running() or main_thread
  local t = thread_locals[ th ]
  if t then
    return t[ k ]
  else
    return _G[ k ]
  end
end

function TL_meta:__newindex( k, v )
  local th = coroutine.running() or main_thread
  local t = thread_locals[ th ]
  if not t then
    t = setmetatable( { _G = _G }, { __index = _G } )
    thread_locals[ th ] = t
  end
  t[ k ] = v
end

-- convenient access to thread local variables via the `TL` table:
TL = setmetatable( {}, TL_meta )
-- or make `TL` the default for globals lookup ...
if setfenv then
  setfenv( 1, TL ) -- Lua 5.1
else
  _ENV = TL -- Lua 5.2+
end
0
задан EncoreWLT 5 March 2019 в 10:31
поделиться

1 ответ

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

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

Затем я получаю все значения 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);
            }

        }
    }
}
0
ответ дан Serhat Oz 5 March 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: