使用 Powershell,我试图删除字符串数字部分的前导零。以下是几个示例和预期结果:
AB012需要变成AB12
ABC010需要变成ABC10
我尝试了以下方法,但它摆脱了所有零。我怎么能告诉它只删除前导零?字符串的格式始终是字母后跟数字。但是,字母的长度可能会有所不同。
$x = ABC010
$y = $x -replace '[0]'
$y
这将显示 ABC1,我希望显示 ABC10。
谢谢。
使用 Powershell,我试图删除字符串数字部分的前导零。以下是几个示例和预期结果:
AB012需要变成AB12
ABC010需要变成ABC10
我尝试了以下方法,但它摆脱了所有零。我怎么能告诉它只删除前导零?字符串的格式始终是字母后跟数字。但是,字母的长度可能会有所不同。
$x = ABC010
$y = $x -replace '[0]'
$y
这将显示 ABC1,我希望显示 ABC10。
谢谢。
使用后视和前瞻断言尝试这个正则表达式
'(?<=.+)(0)(?=.+)'
问题是如果你有像“0AB0101”这样的字符串变成“0AB11”在这种情况下使用:
'(?<=\D)(0)(?=.+)'
此正则表达式搜索后跟任意数量的 0 的字母,并将该字母保留在替换模式中,但去除零:
$x = $x -replace '([a-z])0*', '$1'
这是另一个将数字评估为数字的选项:
PS> [regex]::replace('ABC010','(\d+)',{iex $args[0]})
ABC10
或者使用 TrimStart 方法:
PS> [regex]::replace('ABC010','(\d+)',{$args[0].ToString().TrimStart('0')})
ABC10