使用PowerShell在字符串中搜索同时特殊字符

时间:2018-01-15 07:48:07

标签: string powershell replace

我正在尝试解决一个问题,如果一个字符串有多个"特殊字符"在字符串中如何用单个字符替换它。 例如: -

$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"

1 个答案:

答案 0 :(得分:3)

只需添加+量词:

$a = "INC0010347~INC0010348~~~INC0010349"
$a -replace '~+','~'

或者:

[regex]::Replace($a,'~+','~')

注意:

而不是使用string.Replace方法,例如$a.Replace('~+','~')不起作用,请使用支持Regex的-replace[regex]::Replace

见:

Quantifiers in Regular Expressions