我有一个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
中获取所选行,并以巧妙的方式消除这些行。