我正在尝试解决一个问题,如果一个字符串有多个"特殊字符"在字符串中如何用单个字符替换它。 例如: -
$a = "INC0010347~INC0010348~~INC0010349"
$a = $a.Replace("~~","~")
$a
结果1: - " INC0010347~INCOM10348~INCOM10349"
在上述情况下,如果字符数为2,则替换功能将起作用。但是,任何超过2的都将失败..如下所示:
$a = "INC0010347~INC0010348~~~INC0010349"
$a = $a.Replace("~~","~")
$a
结果2: - " INC0010347~INCON10348 ~~ INC0010349"
我正在编写一个脚本,可以帮助我动态地执行此操作而不管特殊字符的数量(在这种情况下为波形符(〜)),结果应为
结果1: - " INC0010347~INCOM10348~INCOM10349"
答案 0 :(得分:3)
只需添加+
量词:
$a = "INC0010347~INC0010348~~~INC0010349"
$a -replace '~+','~'
或者:
[regex]::Replace($a,'~+','~')
注意:强>
而不是使用string.Replace
方法,例如$a.Replace('~+','~')
不起作用,请使用支持Regex的-replace
或[regex]::Replace
见: