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

不使用LINQ实现字符串转指定列宽字符交错数组的方法咨询

原有代码的问题

  • 行数计算逻辑有缺陷:直接用stringContent.Length / arraySize得到整行数量,多申请1行的逻辑没有判断是否存在剩余字符,若字符串长度刚好是arraySize的整数倍会多出空行
  • 单行数组长度申请错误:new char[arraySize - 1]仅申请了4个字符的空间,无法存下最多5个字符,会触发索引越界
  • 数组索引使用错误:内层循环j从1开始赋值,数组下标从0开始,不仅第一个位置未赋值,还会超出数组长度范围
  • 剩余字符未处理:原循环仅处理了整行的字符,最后不足arraySize的剩余字符没有单独存入最后一行
  • 输出逻辑缺陷:输出时统一按arraySize长度遍历所有行,最后一行长度不足时会触发索引越界

正确实现代码

static void Main(string[] args)
{
    int arraySize = 5;
    string stringContent = "Loremipsumdolorsitamet";
    // 计算总行数:有余数则行数+1
    int totalLines = stringContent.Length / arraySize;
    if (stringContent.Length % arraySize != 0)
    {
        totalLines++;
    }
    char[][] save = new char[totalLines][];

    int charIndex = 0;
    for (int i = 0; i < totalLines; i++)
    {
        // 计算当前行实际长度,最后不足5个字符时取剩余数量
        int currentLineLength = Math.Min(arraySize, stringContent.Length - charIndex);
        char[] line = new char[currentLineLength];
        for (int j = 0; j < currentLineLength; j++)
        {
            line[j] = stringContent[charIndex];
            charIndex++;
        }
        save[i] = line;
    }

    // 输出验证
    for (int i = 0; i < save.Length; i++)
    {
        for (int k = 0; k < save[i].Length; k++)
        {
            Console.Write(save[i][k]);
        }
        Console.WriteLine();
    }

    // 如需打印数组结构可使用以下代码
    Console.WriteLine("{");
    for (int i = 0; i < save.Length; i++)
    {
        Console.Write("    { ");
        for (int k = 0; k < save[i].Length; k++)
        {
            Console.Write($"'{save[i][k]}'");
            if (k != save[i].Length - 1)
            {
                Console.Write(", ");
            }
        }
        Console.Write(" }");
        if (i != save.Length - 1)
        {
            Console.Write(",");
        }
        Console.WriteLine();
    }
    Console.WriteLine("}");
}

实现逻辑说明

  • 先根据字符串总长度和单行最大长度计算总行数,存在剩余字符时才多申请一行
  • 逐行生成字符数组时,优先判断当前剩余字符数,不足单行最大长度时按实际剩余长度申请数组
  • 数组索引统一从0开始遍历赋值,避免越界
  • 输出时按每行的实际长度遍历,不会触发越界问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:15:03