簡體   English   中英

如何對數組內的數字字符串進行操作(在 powershell 中)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM