Powershell字符串不包含

Gra*_*y D 4 string powershell

我有一些代码接受一个字符串,

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

if-or我需要检查字符串是否包含@符号之后的右边部分.如何检查@符号是否丢失?

Mat*_*sen 14

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

$user.DisplayName -inotmatch "@"
Run Code Online (Sandbox Code Playgroud)

-match运营商不使用位于右侧的图案左侧操作数正则表达式匹配.

前缀它i使得它明确区分 nsensitive,和not前缀否定表达

你也可以这样做:

-not($user.DisplayName.ToLower().Contains("@"))
or
!$user.DisplayName.ToLower().Contains("@")
Run Code Online (Sandbox Code Playgroud)

对于简单的通配符文本匹配(也许你讨厌正则表达式,我知道什么?):

$user.DisplayName -notlike "*@*"
Run Code Online (Sandbox Code Playgroud)

或者用IndexOf查找子字符串;

$user.DisplayName.IndexOf("@") -eq (-1)
Run Code Online (Sandbox Code Playgroud)