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

PowerShell中如何按|字符拆分字符串并提取前半段内容?

问题排查

  • 错误1:无需对|做正则转义。String.Contains()、String.IndexOf()都属于普通字符串匹配方法,不是正则匹配,[regex]::Escape("|")会把|转义为\|,你原字符串里不存在\|子串,所以判断条件永远不成立。
  • 错误2:变量名拼写错误,赋值时写的$PolcyManual少了字母i,和原变量$PolicyManual不一致,就算判断条件成立也不会修改到目标变量。

可行方案

方案1:按原始思路修改(定位索引+截取)

直接用原生|字符匹配即可,不需要额外转义:

$PolicyManual = $Item["PolicyManual"] 
Write-Host $PolicyManual   # 输出 NFP|8dc3b47a-48eb-4696-abe2-48729beb63c8

if ($PolicyManual.Contains("|")) {
    $PolicyManual = $PolicyManual.Substring(0, $PolicyManual.IndexOf("|"))
}

Write-Host $PolicyManual # 输出 NFP

方案2:更简洁的分割字符串方案

用Split()方法直接按|分割,取第一个元素即可,代码更短:

$PolicyManual = $Item["PolicyManual"].Split("|")[0]

如果担心字符串不存在|时逻辑异常,可以补充判断分支:

$PolicyManual = if ($Item["PolicyManual"].Contains("|")) {
    $Item["PolicyManual"].Split("|")[0]
} else {
    $Item["PolicyManual"] # 不存在|时直接返回原字符串
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:06:03