从richTextBox中删除特定行?

时间:2013-08-19 05:29:56

标签: c# regex richtextbox

我有一个richTextBox1并且有超过50行(有些行是空的)...我想删除行只用ALTER TABLE开始并包含MOVE STORAGE直到下一个空行...例如下面第一行单词(在richtextbox中实际上有两行,然后是空行)以ALTER TABLE开头并有MOVE STORAGE所以我需要删除所有内容直到下一个空行。

ALTER TABLE "CAMPUS_SITE" MOVE STORAGE ( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT);

我的代码:

        var text = "";//Holds the text of current line being looped.
        var startindex = 0;//The position where selection starts.
        var endindex = 0;//The length of selection.

        for (int i = 0; i < richTextBox1.Lines.Length; i++)//Loops through each line of text in RichTextBox
        {
            text = richTextBox1.Lines[i];//Stores current line of text.
            if (text.Contains("MOVE STORAGE") == true)//Checks if the line contains MOVE STORAGE.
            {
                startindex = richTextBox1.GetFirstCharIndexFromLine(i);//If match is found the index of first char of that line is stored in startindex.
                endindex = text.Length;//Gets the length of line till semicolon and stores it in endindex.
                richTextBox1.Select(startindex, endindex);//Selects the text.
                richTextBox2.Text = richTextBox2.Text.Replace(richTextBox1.SelectedText, string.Empty);//Replaces the text with empty string.
            }
        }

2 个答案:

答案 0 :(得分:3)

要删除所有以alter table开头并包含move storage的行,可以执行此操作

List<string> finalLines = richTextBox1.Lines.ToList();
finalLines.RemoveAll(x => x.StartsWith("ALTER TABLE") && x.Contains("MOVE STORAGE"));
richTextBox1.Lines = finalLines.ToArray();

答案 1 :(得分:1)

String[] txt = richTextBox1.Lines;
bool flag = false;
for (int i = 0; i < txt.Length; i++)
{
    if (txt[i].StartsWith("ALTER TABLE") && txt[i].Contains("MOVE STORAGE"))
       flag = true;
    if (string.IsNullOrEmpty(txt[i]))
       flag = false;

     if (flag)
       txt[i] = string.Empty;
 }
 richTextBox1.Lines = txt;

此代码不会删除您的行,而是将String.empty(等于“”)设置为此行。

如果您需要从行中删除所有文本到空行,可以使用

String[] txt = richTextBox1.Lines;
            richTextBox1.Text = string.Empty;
            bool flag = false;
            for (int i = 0; i < txt.Length; i++)
            {
                if (txt[i].StartsWith("ALTER TABLE") && txt[i].Contains("MOVE STORAGE"))
                    flag = true;
                if (string.IsNullOrEmpty(txt[i]))
                    flag = false;

                if (!flag)
                    richTextBox1.Text += txt[i] + "\r\n";
            }