将自由文本重新格式化为固定格式文本(C#)

Paa*_*and 1 .net c#

我有一个看似很直接的问题,但我找不到一个干净简单的解决方案.

  • 我有一些自由格式化的文字.此文本可能很长,包含各种长度(> 120个字符),段落和空行的行.

  • 我需要以固定格式呈现此文本(例如,120行字符行和25行行页面).但保持原始格式在段落和空行.

分页符不应该在单词的中间.理想情况下,应该放置一个分页符,以便我们避免页面底部的新段落的单行,而是将整个段落移动到下一页等.

简化示例(输入文本):


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec at magna at tellus vehicula eleifend. Vivamus at est erat. Phasellus eget tincidunt tellus. Integer ultrices dolor a magna congue imperdiet. 

Duis est sem, aliquet id fermentum sed, mollis nec metus. Phasellus porttitor porttitor sodales. Aliquam tincidunt convallis massa, sed tempus erat ornare in. Sed scelerisque, lorem accumsan imperdiet accumsan, mauris turpis molestie augue, vehicula egestas tellus quam ac nulla. 

In porta augue ac dolor imperdiet semper. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin lacus neque, tempor nec feugiat sed, posuere sed lorem. 

Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nulla metus neque, volutpat vitae pharetra rutrum, malesuada in dolor. 
Run Code Online (Sandbox Code Playgroud)

使用分页符(程序输出)格式化的"固定"宽度:


Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
Donec at magna at tellus vehicula eleifend. Vivamus at 
est erat. Phasellus eget tincidunt tellus. Integer 
ultrices dolor a magna congue imperdiet. 

Duis est sem, aliquet id fermentum sed, mollis nec metus. 
Phasellus porttitor porttitor sodales. Aliquam tincidunt 
convallis massa, sed tempus erat ornare in. Sed scelerisque, 
lorem accumsan imperdiet accumsan, mauris turpis molestie 
augue, vehicula egestas tellus quam ac nulla. 
[pagebreak]
In porta augue ac dolor imperdiet semper. Vestibulum ante 
ipsum primis in faucibus orci luctus et ultrices posuere 
cubilia Curae; Proin lacus neque, tempor nec feugiat sed, 
posuere sed lorem. 

Class aptent taciti sociosqu ad litora torquent per conubia 
nostra, per inceptos himenaeos. Nulla metus neque, volutpat 
vitae pharetra rutrum, malesuada in dolor. 
Run Code Online (Sandbox Code Playgroud)

有人有主意吗?

Chr*_*ens 5

第一阶段

  1. 将文本读入单个字符串.
  2. 将换行符分隔为换行符(\n)上的数组(lines []).

阶段2

  1. 初始化一个stringbuilder.
  2. 循环遍历行集合,并将每行拆分为空格字符上的单词数组.然后遍历单词数组并将每个单词追加到字符串构建器.当行长度超过阈值时,插入换行符.当你在lines数组的末尾时,检查stringbuilder!EndsWith换行符(你的最后一行恰好是阈值长度,然后为段落分隔添加两个换行符.