使用 Regex.Replace 将文本拆分为最大长度的字符串而不打断单词

Use Regex.Replace to split text in strings of a max length without breaking words

我正在尝试将文本拆分为特定长度的行(在本例中为 69 个字符或更少)而不打断单词并使用 spaces 或“/”作为我想要匹配的字符替换为换行符 我可以用 Regex.Split 使用以下代码

var strText = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
var lines = Regex.Split(strText, @"(.{1,69})(?:\s|/|$)")
Console.WriteLine(string.Join("\n", Array.FindAll(lines,line => !string.IsNullOrEmpty(line))));

这段代码给出了以下结果(这是我想要的)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.

我认为用 Regex.Replace 可以获得相同的结果,但我做不到。我试过:

var lines = Regex.Replace(strText, @"(.{1,69})(?:\s|/|$)", "\n");

但是它 returns 7 个分隔线字符

是否可以替换 space 或“/”以便在不中断单词的情况下拥有 7 行 69 个字符或更少? (有一个班轮码加分)

您可以用捕获的部分更改替换部分以正确获取所有行

var lines = Regex.Replace(strText, @"(.{1,69})(?:\s|/|$)", "\n");