0

私は richTextBox1 を持っていて、50 行以上あります (一部の行は空です)... ALTER TABLE で始まり、次の空行まで MOVE STORAGE を含む行のみを削除したいです...たとえば、以下の最初の行単語(リッチテキストボックスには実際には2行あり、その後に空の行が続きます)は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.
            }
        }
4

2 に答える 2

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();
于 2013-08-19T05:42:17.310 に答える
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 (equals "") を設定します。

行から空の行まですべてのテキストを削除する必要がある場合は、使用できます

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";
            }
于 2013-08-19T06:07:02.873 に答える