我试图避免使用嵌套的ForEach循环作为更大的代码的一部分。为此,我使用-notcontains操作符。基本上,我想查看一个字符串内是否存在一个子字符串。如果存在,则不执行任何操作,如果不存在,则打印“未找到”。使用-notcontains查找字符串内的字符串中的子字符串
这里是代码...
$arr = @('"value11","value21","value31"','"value12","value22","value32"','"value13","value23","value33"')
if ($arr -notcontains "*`"value24`"*")
{
Write-Host "Not Found"
}
if ($arr -notcontains "*`"value22`"*")
{
Write-Host "Not Found 2"
}
我们可以看到,value24不是阵列的任何字符串中。但是,value22在数组中的第二个字符串内。
为此结果应输出随后...
Not Found
但是,相反,我看到下面的输出...
Not Found
Not Found 2
谁能告诉我为什么发生这种情况?
FYI,看起来像包含操作者需要在阵列中的项目的精确匹配,和通配符是无用 - http://www.computerperformance.co.uk/powershell/powershell_conditional_operators.htm。我有一个酝酿的答案,它绝对不是最干净的解决方案。如果有人有更好的解决方案,我很乐意听到它。 –
你想对每个匹配/不匹配做出反应吗?或者只是在数组期间出现? – Matt
基本上,如果子串不存在于数组的任何字符串中,它应该只打印一次“Not Found”。如果它确实存在于阵列中,请不要打印任何东西... –