[英]How do I do operations with numeric strings inside an array (in powershell)?
所以假設我的變量$a
是一個包含“1”和“2”作為字符串的數組。
$a = "1", "2"
現在我想通過管道使用foreach
從每個值中減去 1,所以我會做類似的事情
$一個 | 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
的值,因為您沒有將表達式的結果分配回任何東西。
只需將實例變量添加到循環的最后一行,如下所示:
$a = $a | foreach{$_ = [int]$_ - 1; $_}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.