Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 如何在PowerShell中测试变量是否超过八个字符?_Variables_Testing_Powershell - Fatal编程技术网

Variables 如何在PowerShell中测试变量是否超过八个字符?

Variables 如何在PowerShell中测试变量是否超过八个字符?,variables,testing,powershell,Variables,Testing,Powershell,如何测试$dbUserName中的字符数是否超过八个字符 我无法找到一个或多个命令来执行此操作。我只能找到变量是否为空: if ($dbUserName) { Write-Output " You left Username blank" $dbUserName = read-host } 但我希望下一次测试是这样的: if ($dbUserName [String] > 8 ) } Write-Output " Please enter more than 8

如何测试$dbUserName中的字符数是否超过八个字符

我无法找到一个或多个命令来执行此操作。我只能找到变量是否为空:

if ($dbUserName) {
    Write-Output " You left Username blank"
    $dbUserName = read-host
}
但我希望下一次测试是这样的:

if ($dbUserName [String] > 8 ) }
    Write-Output " Please enter more than 8 characters "
    $dbUserName=read-host " Re-enter database user name"
}

使用
[String]
类型的
length
属性:

if ($dbUserName.length -gt 8) {
    Write-Output "Please enter more than 8 characters."
    $dbUserName = Read-Host "Re-enter database username"
}
请注意,在
if
条件下,您必须使用
-gt
而不是
。PowerShell使用以下比较运算符来比较值和测试条件:

  • -eq=等于
  • -ne=不等于
  • -lt=小于
  • -gt=大于
  • -le=小于或等于
  • -ge=大于或等于

还可以对正则表达式使用-match。例:

if ($dbUserName -match ".{8}" )
{
    Write-Output " Please enter more than 8 characters "
    $dbUserName=read-host " Re-enter database user name"
}

另外,如果你和我一样,喜欢你的花括号在代码块的同一水平位置,你可以把它放在新的一行,因为它期待一个代码块,它会在下一行看到。在某些命令中,第一个大括号必须与您的命令对齐,您可以使用严重重音标记(`)来告诉powershell将下一行视为延续。

>是重定向运算符。我怀疑-gt可能是一个更好的选择。@mjolinor是的,没错。使用多种语言的危险。:)这篇文章的逻辑仍然有缺陷。如果用户名长度超过8个字符,则输出为:输入超过8个字符?应该是-lt$var.length说我的字符串是1个字符,虽然它实际上接近30个字符。奇怪的是,没有人理解这段代码中的逻辑。您正在检查用户名长度是否大于8,如果为True,则要求他们输入更多字符。因此,如果长度小于或等于8,则可以接受。我认为应该是-lt或-le…使用正则表达式完成如此简单的任务似乎肯定要慢得多。虽然在如此短的操作中,它可能甚至不明显。如果您想测试8或更少,正则表达式应该是“^.{0,8}$”。但我同意@RaúlSalinas Monteagudo的观点,即这比字符串长度检查需要的速度(稍微)慢,而且更复杂。