1

使用 Powershell,我试图删除字符串数字部分的前导零。以下是几个示例和预期结果:

AB012需要变成AB12

ABC010需要变成ABC10

我尝试了以下方法,但它摆脱了所有零。我怎么能告诉它只删除前导零?字符串的格式始终是字母后跟数字。但是,字母的长度可能会有所不同。

$x = ABC010
$y = $x -replace '[0]'
$y

这将显示 ABC1,我希望显示 ABC10。

谢谢。

4

3 回答 3

2

使用后视和前瞻断言尝试这个正则表达式

'(?<=.+)(0)(?=.+)'

问题是如果你有像“0AB0101”这样的字符串变成“0AB11”在这种情况下使用:

'(?<=\D)(0)(?=.+)'
于 2013-05-07T14:28:54.650 回答
2

此正则表达式搜索后跟任意数量的 0 的字母,并将该字母保留在替换模式中,但去除零:

$x = $x -replace '([a-z])0*', '$1'
于 2013-05-07T14:32:18.173 回答
0

这是另一个将数字评估为数字的选项:

PS> [regex]::replace('ABC010','(\d+)',{iex $args[0]})
ABC10 

或者使用 TrimStart 方法:

PS> [regex]::replace('ABC010','(\d+)',{$args[0].ToString().TrimStart('0')})
ABC10
于 2013-05-07T14:39:25.927 回答