我有一個名為 $Map 的陣列,它有 29 個 23 個字符的字串。使用 $CharY 變數指定專案的索引,使用 $CharX 變數指定應替換該專案的哪個字符。我如何用字符“0”實際替換專案的這個字符?我嘗試使用$Map[$CharY][CharX],但運行此命令后,顯示錯誤訊息
At line:1 char:1
$Map[$CharY][$CharX] = "0"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidOperation: (:) [], RuntimeException
FullyQualifiedErrorId : CannotIndex
uj5u.com熱心網友回復:
PowerShell 使用的.NET 字串是不可變的。您可以通過索引讀取單個字符,但不能直接修改它。相反,使用修改后的字符創建一個新字串并將其分配回陣列:
$Map = 1..29 | ForEach-Object { '1' * 23 }
$CharY = 1
$CharX = 2
$Line = $Map[$CharY].ToCharArray()
$Line[$CharX] = '0'
$Map[$CharY] = -join $Line
$Map
輸出:
11111111111111111111111
11011111111111111111111
... [remaining lines omitted] ...
說明:
- 第一行
$Map包含 29 個字串,每個字串由 23 個字符組成。 String.ToCharArray()用于將字串轉換為可以修改的字符陣列。- 運算子的一元形式
-join用于從單個字符創建新字串。或者,可以使用接受 char 陣列的 String 建構式[String]::new($Line):
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/467312.html
標籤:数组 细绳 电源外壳 powershell-5.1
上一篇:使用不同的分隔符拆分文本
