删除powershell中的前导零

时间:2018-03-05 19:04:29

标签: powershell trim

我有几个字符串,并尝试删除它们的前导零。我知道我可以使用TrimStart(),但如果所有数字都为零,那就错了。

$Test = "00000.22"
$Test = $Test.trimstart('0')

结果是.22,我期望的是0.22。我怎样才能实现它?谢谢。

2 个答案:

答案 0 :(得分:5)

您可以使用类型转换为十进制

$Test = "00000.22"
[decimal]$Test

答案 1 :(得分:4)

文本解决方案是将-replace运算符与正则表达式一起使用:

PS> "00000.22" -replace '^0+', '0' 
0.22

^0+在字符串的开头(+)匹配一个或多个(^)零,并用零替换它们。

gms0ulman's answer很方便,在大多数情况下都可能正常工作,但有陷阱

  • 您正在将数据类型更改为[decimal],并将其转换回字符串可能会导致文化特定的表示形式.转换为, (也就是说,PowerShell本身经常使用不变的文化,总是使用.); e.g:

    # Cast to [decimal] using the German culture ('de')
    PS> [System.Threading.Thread]::CurrentThread.CurrentCulture = 'de'; [decimal] '0000.22'
    0,22  # !! Note the "," instead of "."
    
  • 即使[decimal]等高精度数据类型不太可能,也可能舍入错误

    PS> [decimal] '00.99999999999999999999999999999'
    1.0000000000000000000000000000 # !! rounding occurred