gpt4 book ai didi

arrays - 一旦达到客户端选择的数字,Powershell 循环就会为变量分配一个值

转载 作者:行者123 更新时间:2023-12-02 01:42:42 27 4
gpt4 key购买 nike

我正在努力完成两件事。

  1. 我尝试向用户列出数组的所有值,同时对该列表进行编号。
  2. 我正在尝试为变量分配一个值,具体取决于什么用户选择。
# List that prints array items for a user to choose from
$Array = @('A', 'B', 'C', 'D', 'E', 'F')

foreach($i in $Array)
{
Write-Host "|" $i #this | character should be a list from 1-6, listing all the groups in the array
}
Write-Output "Please enter which group:"
$Array = Read-Host -Prompt " "

# Assign value to the variable
$x = Read-Host "Please enter a number"

$Array = @('A', 'B', 'C', 'D', 'E', 'F')

$i=0
while ($i -lt $x) {
$i++
if ($i -eq $x) { continue }
}
$x = $Array[$i]

Write-Host "You're assigned to group " $x

我已经想到了这种肮脏的方法,但我试图看看是否有一种更简单的方法来执行此操作(有人提到了多维数组)。这两段代码应该一起工作,解释相同的变量赋值。

谢谢!

编辑1:我希望用户不必为 A 组输入“0”。

最佳答案

我想我正确理解了你的意思...

在这种情况下,我会使用 for 循环,因为它适用于此类场景:

$Array = @('A', 'B', 'C', 'D', 'E', 'F')
for ($i = 0; $i -lt $Array.Count; $i++)
{
$j = $i + 1
"{0}: {1}" -f $j, $Array[$i]
}

$selection = (Read-Host -Prompt "Enter Number(s)").Split(',').Trim()
foreach ($selected in $selection)
{
$Array[$selected - 1]
}
#Outputs:
<#
1: A
2: B
3: C
4: D
5: E
6: F
Enter Number(s): 1, 2, 3
A
B
C
#>

通过将 1 添加到 $i(并将其分配给 $j),我们从 1 用于分配给 $Array 中当前迭代的数字索引。这样,我们仍然可以使用 $i 来引用实际的索引值并将其显示在其旁边。使用 -f 格式运算符,可以实现“更干净”的代码;其中 $j1$Array[$i]0,因此 A.

最后,使用 foreach 循环,如果您传递多个以逗号分隔的数字,我们可以进行多项选择。剩下要做的唯一一件事就是从所选数字中减去 1:$Array[$selected - 1],它将为您提供正确的值你的数组。

关于arrays - 一旦达到客户端选择的数字,Powershell 循环就会为变量分配一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71387517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com