使用Regex.Replace以最大长度的字符串拆分文本而不会破坏单词

时间:2017-03-25 03:11:19

标签: c# regex string replace string-length

我尝试将文本拆分为特定长度的行(在这种情况下为69个字符或更少)而不会破坏单词并使用空格或" /"作为我要匹配的字符替换为换行符 我可以使用以下代码

使用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。恩惠    ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut
   aliquip ex ea commodo consequat。 Duis aute irure dolor在    代表性的velitate 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");

但它会返回7个分隔符

是否可以更换空间或" /"为了有7行69个字符或更少而不破坏单词? (如果一个班轮代码加分)

1 个答案:

答案 0 :(得分:2)

您可以使用捕获的部件更改替换部件以正确获取所有线

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