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

C#实现按单词拆分长字符串 每行最多20字符且不截断单词

原代码存在的问题

  • 字符串数组line未初始化就直接赋值,会触发空引用异常
  • while循环内每次都将索引变量i重置为0,所有截取的内容都会覆盖数组第一个元素
  • 仅单次查找小于20的空格,没有循环处理整段文本的所有行
  • void方法错误添加返回值return split,存在语法错误
  • 没有处理第20个字符前后最后一个空格的判断逻辑,也没有覆盖单单词超过20字符、剩余内容不足20字符等边界场景

修改后可运行的完整代码

using System;
using System.Collections.Generic;

namespace stringToLines
{
    class Program
    {
        static void SplitSentenceToLines()
        {
            string input = Console.ReadLine()?.Trim() ?? string.Empty;
            List<string> lines = new List<string>();
            int currentPosition = 0;
            const int maxLineLength = 20;

            while (currentPosition < input.Length)
            {
                // 剩余字符不足20,直接作为最后一行
                if (input.Length - currentPosition <= maxLineLength)
                {
                    lines.Add(input.Substring(currentPosition));
                    break;
                }

                // 查找第20个字符之前最后一个空格的位置
                int splitPosition = input.LastIndexOf(' ', currentPosition + maxLineLength, maxLineLength);
                
                // 未找到空格说明当前单词超过20字符,强制在20字符位置拆分
                if (splitPosition == -1)
                {
                    splitPosition = currentPosition + maxLineLength;
                }

                // 截取当前行,跳过空格本身
                lines.Add(input.Substring(currentPosition, splitPosition - currentPosition).TrimEnd());
                currentPosition = splitPosition + 1;
            }

            // 输出所有拆分后的行
            foreach (var line in lines)
            {
                Console.WriteLine(line);
            }
            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Please enter your long sentence(>20 characters)");
            SplitSentenceToLines();
        }
    }
}

核心逻辑说明

  • 用List<string>替代固定长度数组,无需提前计算行数,避免数组越界问题
  • 每次从当前位置往后找20个字符范围内的最后一个空格,保证在完整单词末尾拆分
  • 新增边界处理:如果连续20个字符都没有空格(单个单词超长),直接在20字符位置强制拆分
  • 剩余字符不足20时直接整段截取作为最后一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:36:05