0

我试图从一个文本框中筛选出一系列名称并将过滤后的列表复制到另一个文本框。我遇到的问题是,当我使用 add_click 按钮时,它只能在少数情况下工作。当我有要在列表中过滤的名称(列表的前面或结尾)时,没有结果添加到目标文本框中。此外,如果我要添加一个应该被过滤掉的项目,它只会将目标框清空(假设意外添加到一个好的名称列表中,所以即使是好的名称也会被清空)。因此,如果我有 5 个要复制的项目和一个应该被过滤掉的项目,那么整个目标框就会被空白。当我从文本框列表中删除过滤掉的项目时,目标框会填充这些名称。这些是我要过滤掉的下面的前缀。

$objOutputBox.Text = $logOutputBox.text |?{$_ -notmatch "etc$|^mint|kssc*|mmm|charl"}

有什么想法可以安排这个,以便过滤掉不需要的机器并添加所需的机器?现在,它仅在我添加的每个名称都没有过滤掉的前缀或后缀时才有效。我的推理是试图让它工作,并且过滤掉的名称将被删除,同时单击按钮添加所需的名称。任何帮助表示赞赏。

4

1 回答 1

1

我不确定我是否正确理解这一点。文本很多,样本不多。您现在应该考虑这一点,以备将来参考。一张“图片”(样本)值一千字。:-) 您要过滤的名称是否按换行符、空格、字符分隔?我似乎在你的文字中找不到。

为了帮助您入门,该属性是带有换行符Text的单个对象。( ) 通过将当前对象与规则匹配来工作。现在,由于是一个单一的对象,它要么通过(它通过了你的测试),要么一个都不会通过。要解决此问题,您可以尝试根据您在文本框中拆分名称的方式将字符串拆分为数组。顺便说一句,当您使用正则表达式进行匹配时,您应该使用单引号,而不是因为特殊字符而使用双引号。stringWhere-object?Textstring

#Sample with list seperated by linebreaks
PS > $listseperatedbylinebreaks = @"
this
is
my
charl
list
"@

PS > $listseperatedbylinebreaks.Split("`n") | ? { $_ -notmatch "etc$|^mint|kssc*|mmm|charl"}

this
is
my
list

#Sample with list seperated by linebreaks and spaces    
PS > $listseperatedbylinebreaksandspaces = @"
this is
my list sdsadetc
"@

PS > $listseperatedbylinebreaksandspaces.Split("`n ", [System.StringSplitOptions]::RemoveEmptyEntries) | ? { $_ -notmatch "etc$|^mint|kssc*|mmm|charl"}

this
is
my
list

我希望这能让你知道如何解决它。如果没有,请提供更多示例(例如输入文本框内容),以便我更好地理解它。

于 2013-04-09T20:32:05.423 回答