gpt4 book ai didi

arrays - 如何在数组中(在Powershell中)使用数字字符串进行操作?

转载 作者:行者123 更新时间:2023-12-03 00:59:08 26 4
gpt4 key购买 nike

因此,可以说我的变量$a是一个包含“1”和“2”作为字符串的数组。

$a = "1", "2"



现在,我想通过管道使用 foreach从每个值中减去1,所以我会做类似的事情

$a | foreach{$_ = [int]$_ - 1}



但这似乎无能为力,但不会产生任何错误。因此, $a仍然包含“1”和“2”。我很难理解我哪里出了错...如果我没有数组,这是可能的,所以这可行:

$b = "3"; $b - 2



它会返回1。所以我也尝试了不带“[int]”的情况,但是仍然失败,所以我猜想它要么与管道有关,要么与 foreach有关,但我不知道为什么会这样做。

有什么建议么?

最佳答案

您的foreach不会像您认为的那样对原始数组中的项目进行突变-您将计算的值分配给上下文变量$_,而不是更新数组索引。

您可以使用以下计算的值创建一个新数组:

$a = $a | foreach { [int]$_ - 1 }

或就地改变原始数组中的项目:

for( $i = 0; $i -lt $a.Length; $i++ )
{
$a[$i] = [int]$a[$i] - 1
}

请注意,您的第二个示例也不完全符合您的想法:

PS> $b = "3"; $b - 2
1
PS> $b
3
$b - 2部分是一个表达式,该表达式将被评估并回显到控制台-它不会更改 $b的值,因为您尚未将表达式的结果分配回任何值。

关于arrays - 如何在数组中(在Powershell中)使用数字字符串进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510900/

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