Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Regex.Replace将文本拆分为最大长度的字符串,而不中断单词_C#_Regex_String_Replace_String Length - Fatal编程技术网

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

C# 使用Regex.Replace将文本拆分为最大长度的字符串,而不中断单词,c#,regex,string,replace,string-length,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

我正在尝试将文本拆分为特定长度的行(在本例中为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,圣公会精英,sed do
临时性的劳动和生产许可证。Ut enim
最低限度的成本、成本和实习成本由ullamco laboris nisi ut提供
我是一个普通的消费者。两人在一起的时间
在无尾船帆的船帆上有一种强烈的仇恨
帕里图尔。除圣奥卡塔铜外,无需意外,必须在
这是我的错

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

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

但它返回7个特征线字符


是否可以将空格或“/”替换为7行69个字符或更少,而不中断单词?(如果有一个线性代码,则需要额外加分)

您可以使用捕获的零件更改替换零件,以正确获取所有行

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

看看@Vikhram这篇文章,我读了很多关于Regex的帖子,但是没有一篇有答案,但是你的链接有。替换项是“$1\n”而不是“\n”,这是因为前者将包括匹配项,而后者不包括。请编辑答案以将其标记为解决方案