我試圖避免使用嵌套的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」。如果它確實存在於陣列中,請不要打印任何東西... –