我有一个文本文件installer_input.txt
,在很多行之后,我有一些以product.
或#product.
开头的行。
我想验证第一行是以#product.
开头的,如果之后的所有行包含product.
且以#
开头,那就像{{1}然后检查#product.
。
通过这种方式我尝试了这段代码:
checkedListBox2
但是,如果我只有linesInsTemp.Where(x => x.Contains("product.") )
.ToList()
.ForEach(item =>
{
for (int i = 0; i < this.checkedListBox2.Items.Count; i++)
{
this.checkedListBox2.SetItemChecked(i, true);
}
var index = this.checkedListBox2.Items.IndexOf(item);
if (index >= 0)
this.checkedListBox2.SetItemChecked(index, true);
});
而没有product.
,请点击此框。
在installer_input.ini中,我有类似这样的内容:
#
如果所有行Many rows of text
#product.name1
#product.name2
...
#product.nameN
Rows with text
前面都有#,则选中所有框。我怎么能这样做?
答案 0 :(得分:0)
我认为String.StartsWith方法可以帮到你。您可以将方法重写为
linesInsTemp.Where(x =>x.StartsWith("#product.") )
.ToList()
.ForEach(item =>
{
for (int i = 0; i < this.checkedListBox2.Items.Count; i++)
{
this.checkedListBox2.SetItemChecked(i, true);
}
var index = this.checkedListBox2.Items.IndexOf(item);
if (index >= 0)
this.checkedListBox2.SetItemChecked(index, true);
});
<小时/> 更新: 对于以#product / product / prodact /#prodact
开头的所有行,此正则表达式将返回
true
linesInsTemp.Where(x => Regex.IsMatch(x, "^(#)?prod(u|a)ct[\\w\\W]*") )
.ToList()
.ForEach(function);