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
相关产品推荐
相关产品推荐

