C#实现固定长度文字自动换行

小石头
小石头
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍如何在C#中实现固定宽度的文字自动换行,包括核心代码实现、测试用例及运行结果展示。

问题描述

在图形界面显示或日志处理等场景中,经常需要将较长的字符串按照指定的最大字符数(如3个、10个字符)进行切割,并在每个段落后添加换行符。例如将 "YanZhiwei" 按每3个字符换行,期望结果为 "Yan\r\nZhi\r\nwei"。

C#文字换行代码实现

以下是一个实用的静态扩展方法 WrapText,它接收原始字符串和最大宽度(字符数),并返回按要求换行后的字符串。该方法使用了 StringBuilder 来高效地处理字符插入操作。

#region 文字换行
/// <summary>
/// 文字换行
/// <para>eg:StringHelper.WrapText("YanZhiwei", 3);==>"Yan\r\nZhi\r\nwei"</para>
/// </summary>
/// <param name="data">需要换行的文字</param>
/// <param name="maxWidth">多少长度换行</param>
/// <returns>换行好的文字</returns>
public static string WrapText(this string data, int maxWidth)
{
    int _stringCount = data.Length;
    if (maxWidth > 0 && _stringCount > maxWidth)
    {
        StringBuilder _builderString = new StringBuilder(data);
        int _breakCount = _builderString.Length / maxWidth;
        for (int i = 0; i < _breakCount; i++)
        {
            int _insertPosition = i * maxWidth;
            if (_insertPosition != 0)
            {
                int _offset = (i - 1) * 2;//(\r\n)
                _builderString.Insert(_insertPosition + _offset, Environment.NewLine);
            }
        }
        return _builderString.ToString();
    }
    else
    {
        return data;
    }
}
#endregion

测试验证

我们可以编写一个简单的单元测试来验证该方法的正确性。测试中将调用 WrapText 方法处理 "YanZhiwei" 字符串,设定宽度为3,并检查结果是否符合预期。

[TestMethod()]
public void WrapTextTest()
{
    string _actual = StringHelper.WrapText("YanZhiwei", 3);
    Assert.AreEqual<string>(@"Yan
Zhi
wei", _actual);
}

运行效果

执行上述测试或普通程序后,输出的文字将严格按照设置的宽度进行分行显示。以下是具体的运行结果截图:

总结

通过使用 StringBuilder 结合循环插入环境换行符的方式,可以灵活地在C#中实现任意长度的文字自动换行。这种方法避免了逐个截取子串带来的性能损耗,适合处理大量文本数据的场景。以上就是C#文字换行的详细内容,更多关于C#编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表