PowerShell入门求助:如何将两个列表对应元素按指定格式输出
PowerShell:将两个逗号分隔字符串的对应元素格式化输出
你的代码问题分析
- 直接遍历
$list1/$list2时,PowerShell会把整个字符串当作单个元素处理,不会自动拆分 - 嵌套循环完全多余,且重复执行
-split属于冗余操作 - 变量
$i和$j从未获取到拆分后的对应位置元素
修正后的代码实现
先拆分字符串为数组,再按索引匹配对应元素,最后格式化输出:
Clear-Host $nameStr = "a,b,c" $numberStr = "1,2,3" # 将逗号分隔字符串拆分为数组 $names = $nameStr -split "," $numbers = $numberStr -split "," # 存储每个格式化后的条目 $formattedItems = @() # 按索引遍历,确保元素一一对应 for ($idx = 0; $idx -lt $names.Count; $idx++) { $formattedItems += "{ name = `"$($names[$idx])`", number = `"$($numbers[$idx])`" }" } # 用逗号连接所有条目并输出 $formattedItems -join ", "
更简洁的写法
利用PowerShell的范围运算符和foreach循环简化代码:
Clear-Host $names = "a,b,c" -split "," $numbers = "1,2,3" -split "," $output = foreach ($idx in 0..($names.Count - 1)) { "{ name = `"$($names[$idx])`", number = `"$($numbers[$idx])`" }" } $output -join ", "
输出结果
执行后会得到你预期的格式:
{ name = "a", number = "1" }, { name = "b", number = "2" }, { name = "c", number = "3" }
内容的提问来源于stack exchange,提问作者Ajay
相关产品推荐
相关产品推荐

