删除RichTextBox中的文本

时间:2014-03-23 13:02:22

标签: c# string gps richtextbox frame

我对RichTextBox有一点问题,我里面有文字(请向下看),我想要删除 文本行(使用按钮开始字符'#'和结束新行'\ n')。

  

“#BESTPOSA,COM1_30,0,72.5,01 * 9e9047d2

     

“#BESTPOSA,COM1,01 * 6f8c2c77

     

“$ GPGGA,男,06,0126 * 66

     

“$ GPRMC,152908.00,d * 3A

     

“#AVEPOSA,FINESTEERING,0 * eba27375

     

“$ GPGSA中,M,1.3 * 38 *

这是我的data.txt中的一个示例(有很多GPS数据帧)。操作后我想要只有“$ GPxxx”框架。请帮助别人。

2 个答案:

答案 0 :(得分:0)

RichTextBox有一个Lines属性,它将为您提供一个包含其中所有行的字符串数组。您可以循环遍历它,然后使用RichTextBox上的帮助程序方法确定行长度。

var lines = richTextBox1.Lines;
for (int i = lines.Count()-1;i>=0; i--)
{
    if (lines[i].StartsWith("#"))
    {
        var thisLineStart = richTextBox1.GetFirstCharIndexFromLine(i);
        var maxLines = richTextBox1.Lines.Count();
        if (i >= maxLines)
        {
            richTextBox1.Text = richTextBox1.Text.Remove(thisLineStart);
        }
        else
        {
            var nextLineStart = richTextBox1.GetFirstCharIndexFromLine(i + 1);
            richTextBox1.Text = richTextBox1.Text.Remove(thisLineStart, nextLineStart - thisLineStart);
        }
    }
}

答案 1 :(得分:0)

如果您只是提取,请执行以下操作:

var lines = richTextBox1.Lines.Where(l => !l.StartsWith("#"));

会工作吗?如果您想更新RichTextBox,请执行:

var lines = richTextBox1.Lines.Where(l => !l.StartsWith("#"));
richTextBox1.Text = String.Join("\r\n", lines);