You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell循环生成数组并赋值变量问题求助

PowerShell循环创建数组并保存所有元素的解决方法

你遇到的问题核心是覆盖赋值:每次循环里执行$ls = $spl[0]时,都会把$ls之前的值替换成当前循环的元素,所以循环结束后$ls只会保留最后一次循环的结果'e'。

下面是几种可行的解决方法:

方法1:初始化空数组后追加元素

先创建一个空数组,再在循环里把每个拆分后的元素追加进去:

$old = @("a_1","b_2","c_3","d_4","e_5")
# 初始化空数组
$ls = @()
foreach ($f in $old) {
    $spl = $f.Split("_")
    # 将元素追加到数组末尾
    $ls += $spl[0]
}
$ls

方法2:使用管道+ForEach-Object(推荐)

这种方式更符合PowerShell的管道编程风格,效率也更高(避免+=频繁重建数组的开销):

$old = @("a_1","b_2","c_3","d_4","e_5")
$ls = $old | ForEach-Object {
    # 直接处理当前管道对象,拆分后取第一个元素
    $_.Split("_")[0]
}
$ls

方法3:直接将foreach循环输出赋值给变量

PowerShell支持直接把foreach循环的所有输出结果收集成数组,写法最简洁:

$old = @("a_1","b_2","c_3","d_4","e_5")
$ls = foreach ($f in $old) {
    $f.Split("_")[0]
}
$ls

内容的提问来源于stack exchange,提问作者AoT_1503

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 04:20:33