c# - C#在GUI中将文本文件逐个字符格式化为二维数组
问题描述
我有一个文本文件:
Berzas,sula;;sula;;klevu saldial lapasula a aila, ar suart zemes vaikai du
我需要将其格式化为具有[n, n]
维度的二维数组。它必须是二维数组,我不能使用列表
这是我已经尝试过的:
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 个位置添加一个新行,然后将其添加到 2D 数组中。
这是错误消息:
未处理的异常:System.IndexOutOfRangeException:索引超出了数组的范围。在 System.String.get_Chars(Int32 index) 在 ConsoleApp1.Program.Main(String[] args) 在 C:\Users\Justas\Desktop\Bandymas\ConsoleApp1\Program.cs:line 37
预期输出:
Berzas,su
la;;sula;
;klevu sa
ldial lap
asula a
aula, a
r suart
zemes vai
kai du
解决方案
您制作一个列表,然后再次将此列表转换为字符串。这是错误的。
在下面的代码中,我使用了您的列表值并对每个列表元素应用拆分方法。
然后我得到所有 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);
}
}
}
}
推荐阅读
- jira - 关于 sprint blocker 和范围变更的问题
- c# - 获取 Gridview 的 ItemTemplate 中文本框的单元格值
- python - 为什么在 Python 中包含列表的变量与包含整数的变量在存储/指向值方面的行为不同?
- python - Pytorch LSTM 和交叉熵
- python - 为什么我的提交按钮在它应该包含刚刚更新的数据时呈现一个空白页面?
- skyfield - 如何在天空中找到一颗卫星相对于另一颗卫星的 AZ
- amazon-s3 - 如何将消息从前端传递到隔离的 Lambda 函数?
- javascript - 太多的重新渲染。在 React Native 中
- sql - 在 SQL 中删除单个重复行
- ios - 如何将 SwiftUI 中的静态值从一个视图传递到另一个视图?