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
相关产品推荐
相关产品推荐

