String Powershell字符串不包含

String Powershell字符串不包含,string,powershell,String,Powershell,我有一些代码可以接受字符串 Foreach($user in $allUsers){ if($user.DisplayName.ToLower().Contains("example.com") -or $user.DisplayName.ToLower()) { } else { $output3 = $externalUsers.Rows.Add($user.DisplayName) } } 或后面的部分if,我需要检查字符串是否不包含@符号。如何检

我有一些代码可以接受字符串

Foreach($user in $allUsers){
    if($user.DisplayName.ToLower().Contains("example.com") -or $user.DisplayName.ToLower()) {
    } else {
        $output3 = $externalUsers.Rows.Add($user.DisplayName)
    }
}

后面的部分if,我需要检查字符串是否不包含@符号。如何检查@符号是否丢失

有一百万种方法可以做到这一点,由于可读性,我可能会选择以下方法:

$user.DisplayName -inotmatch "@"
-match
运算符使用右侧的模式对左侧操作数执行正则表达式匹配

在它前面加上
i
使它显式地区分大小写-in,而
not
前缀否定表达式

你也可以这样做:

-not($user.DisplayName.ToLower().Contains("@"))
or
!$user.DisplayName.ToLower().Contains("@")
对于简单的通配符文本匹配(也许你讨厌正则表达式,我知道什么?)

或者用IndexOf查找子字符串

$user.DisplayName.IndexOf("@") -eq (-1)

.Contains()
返回布尔值。只需查看
!($user.DisplayName.ToLower().Contains(“@”)
?完美!如果你创造了一个答案,我会接受它。
$user.DisplayName.IndexOf("@") -eq (-1)