删除powershell中的前导零

问题描述 投票:6回答:2

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

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

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

powershell trim
2个回答
5
投票

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

$Test = "00000.22"
[decimal]$Test

4
投票

一个纯粹的文本解决方案是使用带有正则表达式的-replace运算符:

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

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


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

  • 您正在将数据类型更改为[decimal],并将其转换回字符串可以生成特定于文化的表示形式,其中.转换为,(也就是说,PowerShell本身通常应用不变文化,它总是使用.);例如。: # 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
© www.soinside.com 2019 - 2024. All rights reserved.