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

时间:2014-11-03 06:32:37

标签: c# formatting richtextbox removing-whitespace preserve

我希望在删除所有空行时保留文本中的斜体。我似乎无法做到这一点。

我使用了这段代码。它删除空行但文本为斜体。

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

2 个答案:

答案 0 :(得分:1)

关于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);
}

对于多针,你需要多次调用代码,我很害怕..

答案 1 :(得分:1)

您可以尝试从其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);

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