Slice of Strings操作报System.Object数组转换错误

问题描述 投票:0回答:1
当尝试替换字符串数组切片中的值时,我收到此错误

无法将“System.Object[]”类型的“System.Object[]”值转换为“System.Int32”类型。

代码如

$al[1..3] = $al[1..3] -replace '^', '//'

$al[1..3] = $al[1..3] | ForEach-Object { "//" + $_ }
如何使用数组切片来修改数组中的字符串?


这是一个非切片示例,不会生成错误

$al = @('Zero', 'One', 'Two', 'Three', 'Four') $al[1] = "//" + $al[1]; $al[2] = "//" + $al[3]; $al[3] = "//" + $al[3]; Write-Host $al # Outputs: Zero //One //Two //Three Four
tldr:如何将文本添加到 powershell 字符串数组中特定行片段的开头?

arrays powershell slice
1个回答
0
投票
PowerShell 不支持

给数组“切片”赋值,例如$al[1..3]

;从某种意义上说,这样的表达式不是切片,因为它是现有数组的窗口,而是包含所请求元素的
new数组。

(不幸的是,当您尝试进行此类分配时,错误消息的措辞令人困惑。)

您最好的选择是通过将未修改的元素与通过

-replace

 修改的元素连接起来来组成一个新数组。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.