如何在PowerShell中将String类型转换为Object[]数组?
问题:将String转换为Object[]并匹配指定格式
需求格式与目标数据类型示例:
$demilimitedIds = {/subscriptions/XXX},{/subscriptions/XXX} echo $demilimitedIds.GetType().Name # 输出:Object[]
当前实现代码:
[System.Collections.Generic.List[System.String]]$IDList = @() $IDList.Add("/subscriptions/XXX") $IDList.Add("/subscriptions/XXX") $Alist = '{{{0}}}' -f ($IDList -join '},{') echo "%%%%%%%%%%%%%%%" echo $Alist.GetType().Name # 输出:String echo "%%%%%%%%%%%%%%%"
需要将$IDList转换为与$demilimitedIds格式一致、类型为Object[]的结果,或者将已有的$Alist从String类型转为Object[]。
解决方案
方法1:直接从$IDList生成目标数组(推荐)
不需要先拼接成字符串,直接对每个ID元素添加前后大括号,生成的结果天然就是Object[]类型:
[System.Collections.Generic.List[System.String]]$IDList = @() $IDList.Add("/subscriptions/XXX") $IDList.Add("/subscriptions/XXX") # 遍历每个ID,包装成带大括号的字符串,组成数组 $demilimitedIds = $IDList | ForEach-Object { "{{{0}}}" -f $_ } # 验证类型和内容 $demilimitedIds.GetType().Name # 输出 Object[] $demilimitedIds # 输出:{/subscriptions/XXX} 和 {/subscriptions/XXX}
方法2:从已有的$Alist字符串转换
如果已经生成了$Alist字符串,可以通过拆分和格式化来转为Object[]:
# 假设$Alist的值是 "{/subscriptions/XXX},{/subscriptions/XXX}" $demilimitedIds = $Alist -split '},{', 0 | ForEach-Object { # 移除首尾的大括号,再重新包装成带大括号的格式 $cleanId = $_ -replace '^[{]|}[]$', '' "{{{0}}}" -f $cleanId } # 验证类型 $demilimitedIds.GetType().Name # 输出 Object[]
内容的提问来源于stack exchange,提问作者dev333
相关产品推荐
相关产品推荐

