如何删除空行,同时保留c#中richtextbox的格式

本文关键字:保留 richtextbox 格式 何删除 删除 | 更新日期: 2023-09-27 18:28:47

我希望在删除所有空行的同时保留文本中的斜体。我似乎做不到。

我用了这个代码。它删除了空行,但删除了文本中的斜体字。

richTextBox1.Text = Regex.Replace(richTextBox1.Text, @"^'s*$('n|'r|'r'n)", "", RegexOptions.Multiline);

如何删除空行,同时保留c#中richtextbox的格式

关于RichTextBoxes的黄金法则是,一旦Text具有任何格式,就不要直接更改它。

若要添加,请使用AppendText,若要更改,则需要使用Select, Cut, Copy & Paste..方法来保留格式!

string needle = "'r'r";  // only one possible cause of empty lines
int p1 = richTextBox1.Find(needle);
while (p1 >= 0)
{
    richTextBox1.SelectionStart = p1;
    richTextBox1.Select(p1, needle.Length);
    richTextBox1.Cut();
    p1 = richTextBox1.Find(needle);
}

对于多个针头,恐怕您需要多次调用代码。。

您可以尝试从其Rtf文本中删除空行。下面给出的示例代码将适用于您。

String[] allLines = richTextBox1
                    .Rtf
                    .Split( new string[] { Environment.NewLine },StringSplitOptions.None);
dynamic linesWithoutEmptyLines = from itm in allLines 
                                 where itm.Trim() != "''par" 
                                 select itm;
richTextBox1.Rtf = string
                   .Join(Environment.NewLine, linesWithoutEmptyLines);

它将保留文本的格式,并将删除所有空行。