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

PowerShell拼接时如何保留变量中的大括号({})及正确格式

PowerShell字符串拼接丢失大括号的解决方法

你的代码里变量定义用了双引号字符串,PowerShell会自动解析双引号内的{}:如果大括号中没有可执行的表达式,就会被直接移除,导致输出里丢失了包裹每个键值对的大括号。另外当前拼接逻辑是直接连接字符串,没有添加你期望的逗号分隔符。

下面是两种解决方法:

方法1:使用单引号定义字符串(推荐)

单引号在PowerShell中属于原样字符串,不会解析任何变量或特殊语法,能完整保留大括号和原始字符串内容:

$var1 = '{"1234-TEST-NICE":"$(Buildnumber)-$(BranchName)"}'
$var2 = '{"1234-NCPT-NOT":"$(Buildnumber)-$(BranchName)"}'
$var3 = '{"123478-NCP-POT":"$(Buildnumber)-$(BranchName)"}'
$var4 = '{"1234-RICE-MICE":"$(Buildnumber)-$(BranchName)"}'

$result = @()
if ($var1) { $result += $var1 }
if ($var2) { $result += $var2 }
if ($var3) { $result += $var3 }
if ($var4) { $result += $var4 }

# 用逗号分隔每个元素,符合期望的输出格式
$resultString = $result -join ','

Write-Output $resultString

方法2:双引号中转义大括号

如果必须使用双引号字符串,需要把每个{写成{{,每个}写成}},PowerShell会将两个连续的大括号解析为一个单独的大括号。同时如果要保留$(Buildnumber)这种字符串形式,需要把$转义为$避免被提前解析:

$var1 = "{{\"1234-TEST-NICE\":\"`$(Buildnumber)-`$(BranchName)\"}}"
$var2 = "{{\"1234-NCPT-NOT\":\"`$(Buildnumber)-`$(BranchName)\"}}"
$var3 = "{{\"123478-NCP-POT\":\"`$(Buildnumber)-`$(BranchName)\"}}"
$var4 = "{{\"1234-RICE-MICE\":\"`$(Buildnumber)-`$(BranchName)\"}}"

$result = @()
if ($var1) { $result += $var1 }
if ($var2) { $result += $var2 }
if ($var3) { $result += $var3 }
if ($var4) { $result += $var4 }

$resultString = $result -join ','

Write-Output $resultString

修改后执行代码,输出会和你的期望一致:每个键值对被{}包裹,元素之间用逗号分隔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:45:55