从C#中的Richtextbox中删除特定行

时间:2016-07-06 03:48:56

标签: c# lambda richtextbox

我有一个checkboxlist,用户可以选择从richtextbox中删除哪种行,并带有文本打印输出。例如,打印输出的标题,包含公司名称,日期等

这些不需要的行会从其他所有文本文件中更改,这就是用户需要通过checkbox选择要删除哪些行的原因。

例如,字符串PAGE 1 OF 12在每个页面上重复,但当然页面会发生变化。因此,只有一个子字符串才能获得序列的开头,因此它可以删除所有以PAGE开头的行。打印日期以单词DATE开头,也应删除。

但这不是重要的部分。 重要的是,每个文件的待删除行数都会发生变化。有时它不会有公司名称;有时它会。 我做了一个FOR循环,遍历每个要删除的选中行,并删除richtextbox中的每一行。然后回到开头并重复过程FOREACH检查项目。 这需要很长时间。

所以我推出了这个解决方案,在这个例子中使用了两个textBox

string searchKeyword = textBox1.Text;
string searchKeyword2 = textBox2.Text;

var lines = richTextBox1.Lines;
foreach (string line in lines.Where(l => (!l.StartsWith(searchKeyword)) && (!l.StartsWith(searchKeyword2))))
    _items.Add(line);
listBox2.DataSource = null;
listBox2.DataSource = _items;

这要快得多。但是如何使用'checklistbox'中的每个检查项动态进行搜索,这样我就可以得到一个干净的输出?

我的问题是:如何为可变数量的searchkeywords替换lambda字符串?

这种代码有效,但需要很长时间:

listBox1.Items.Clear();
List<string> substrings = new List<string>();
foreach (var item in checkedListBox1.CheckedItems)
{
    substrings.Add(item.ToString().Substring(0, 4));
}

最后,我需要的是从richtextbox中获取所选行,并以巧妙的方式消除这些行。

0 个答案:

没有答案