gpt4 book ai didi

c# - 在字符串中动态插入换行符

转载 作者:行者123 更新时间:2023-11-30 21:52:43 24 4
gpt4 key购买 nike

我有一个 TextBox,我需要在其中显示一些文本。文本的长度是动态的,因此需要换行以适合多行。

一行的最大长度为 50 个字符。如果文字多于此,我需要添加一个换行符\n

例如,如果文本是 165 个字符:

  1. 在第51个位置添加一个\n
  2. 在第102个位置添加一个\n
  3. 在第153位添加一个\n

所以最终文本的总长度将是 168 个字符。

我知道如何使用循环来做到这一点。但我的问题是,这可以在没有太多代码的情况下完成吗? String 类是否有提供该功能的方法?

这是一个 Windows 窗体应用程序,但包括 TextBox 在内的所有控件都是以编程方式创建的。

最佳答案

对于 Windows 窗体应用程序

您可以使用 WordWrap 属性,将其设置为 true。

如果你想动态地做

您可以使用以下代码在代码中执行此操作:

myTextBox.WordWrap = true;
myTextBox.Multiline = true;

如果你想在 UI 中做

选择文本框,然后按 F4。搜索 WordWrap,并将其设置为 true。

也不要忘记将您的文本框设置为多行

Working sample

@Don 既然你说使用 WordWrap 对你不起作用,你可以尝试使用正则表达式,如下面的代码:

using System.Linq;
using System.Text.RegularExpressions;

private void Form1_Load(object sender, EventArgs e)
{
var textBox = new TextBox
{
Multiline = true,
WordWrap = false,
Width = 295,
Height = 100,
ReadOnly = true
};

var textFromDatabase = "1234567890 1234567890 1234567890 1234567890 111150dasdasds1234567890 1234567890 1234567890 1234567890 111150dasdasds1234567890 1234567890 1234567890 1234567890 1111";

var strings = Regex.Matches(textFromDatabase, ".{0,50}");
var lines = strings.Cast<Match>()
.Select(m => m.Value)
.Where(m => !string.IsNullOrWhiteSpace(m));
var @join = string.Join(Environment.NewLine, lines);

textBox.Text = @join;

Controls.Add(textBox);
}

请注意,我正在使用 WordWrap false 和 Multiline = true 创建一个 TextBox。

关于c# - 在字符串中动态插入换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34539470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com