我有一个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.
}
}
答案 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";
}