PowerShell中数组与字符串拼接无法逐元素生成目标格式邮箱地址
错误原因
你的代码存在两处核心问题:
-split $array逻辑错误:若$array本身已经是数组类型,该操作会先将整个数组转为空格分隔的单字符串再执行拆分,极易出现元素合并异常;若$array是待拆分的原始字符串,拆分后的结果也没有正确传入遍历逻辑。- 遍历逻辑写法错误:
ForEach-Object未接收到有效的管道输入,且循环体内直接引用整个$split数组而非单个遍历元素,PowerShell会自动将整个数组按空格拼接后和前后缀字符串组合,最终输出所有元素挤在同一行的结果。
修正方案
如果你的$array本身就是存储了目标值(2、3、4……100)的数组对象,直接遍历每个元素拼接即可,注意ForEach-Object循环中用$_指代当前遍历到的单个元素:
# 替换为你自己的原始数组赋值即可 $array = 2..100 $mailPrefix = 'test_' $domain = '@test.com' $array | ForEach-Object { $mailPrefix + $_ + $domain }
如果你最初的输入不是数组,是一段空格分隔的原始字符串(例如内容为"2 3 4 ... 100"),先按空白字符正确拆分后再遍历,也可以用foreach语法实现,可读性更高:
# $rawContent 替换为你的原始字符串变量 $splitResult = $rawContent -split '\s+' $mailPrefix = 'test_' $domain = '@test.com' foreach ($item in $splitResult) { "${mailPrefix}${item}${domain}" }
执行后即可得到预期的逐行输出:
test_2@test.com test_3@test.com test_4@test.com ... test_100@test.com
内容的提问来源于stack exchange,提问作者frosty_ad
相关产品推荐
相关产品推荐

