You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#从无空格字符的文本文件生成二维字符串数组?

解决方案

你的核心问题是错误地用空格拆分连续字符,而且代码里的int.Parse既不符合你要string数组的需求,还会因为内容包含字母报错。以下是修正后的实现:

修正后的代码

// 直接读取文件的所有行,自动处理换行符
string[] lines = File.ReadAllLines(@"c:\myfile.txt");

// 确认N的大小(假设所有行长度一致,取第一行的长度)
int n = lines[0].Trim().Length;
string[,] result = new string[n, n];

for (int i = 0; i < lines.Length; i++)
{
    // 清理行首尾的空白(比如多余的换行符、空格)
    string currentLine = lines[i].Trim();
    // 遍历该行的每个字符,存入二维数组
    for (int j = 0; j < currentLine.Length; j++)
    {
        result[i, j] = currentLine[j].ToString();
    }
}

原代码的问题分析

  1. 拆分逻辑错误:你用Split(' ')拆分每行,但文件里的字符是连续无空格的,这会导致每行只会得到一个完整的字符串,无法拆分出单个字符。
  2. 类型转换错误:你试图用int.Parse转换内容,但第二行包含a、b、c、d等字母,会直接抛出格式异常,而且你的需求是存储string类型,不需要转int。
  3. 读取方式不够严谨:File.ReadAllText读取后用\n拆分,可能会保留\r等多余字符,File.ReadAllLines会自动处理不同系统的换行符,更可靠。

额外提示

如果你的需求只是独立操作每个字符,使用char[,]类型的二维数组会更高效,不需要把每个字符转成string,代码可以简化为:

string[] lines = File.ReadAllLines(@"c:\myfile.txt");
int n = lines[0].Trim().Length;
char[,] charResult = new char[n, n];

for (int i = 0; i < lines.Length; i++)
{
    string currentLine = lines[i].Trim();
    for (int j = 0; j < currentLine.Length; j++)
    {
        charResult[i, j] = currentLine[j];
    }
}

内容的提问来源于stack exchange,提问作者sammyrkhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:35:16