29
$InputArray = @(a,e,i,o,u,1,2,3,4,5)
$UserInput = "Enter any value:"

我们如何检查它$UserInput是否$InputArray存在并提示输入正确?

4

3 回答 3

44

使用-contains运算符:

$InputArray -contains $UserInput

对于更新的 PowerShell 版本(v3 及更高版本),您还可以使用-in运算符,这对许多人来说感觉更自然:

$UserInput -in $InputArray

但请注意,它们中的任何一个都会对参考数组 ( $InputArray) 进行线性搜索。如果您的数组很小并且您没有进行大量比较,这并没有什么坏处,但是如果性能是一个问题,则使用哈希表查找将是一种更好的方法:

$validInputs = @{
    'a' = $true
    'e' = $true
    'i' = $true
    'o' = $true
    'u' = $true
    '1' = $true
    '2' = $true
    '3' = $true
    '4' = $true
    '5' = $true
}

$validInputs.ContainsKey($UserInput)
于 2013-06-06T15:06:14.657 回答
10

我了解您正在学习,但您需要在来这里之前使用 Google-fu 和文档。

$inputArray -contains $userinput
于 2013-06-06T15:06:49.763 回答
5

我在 powershell 中一直使用的有趣技巧:该echo命令会将未引用的参数转换为字符串数组。

(echo a b c) -contains 'a'
# outputs True / returns $true

这比打字容易得多@('a','b','c')。在每第二或第三个字符之后,我的手指从来没有快速输入'。

于 2016-09-16T15:38:43.417 回答