我有几个字符串,并尝试删除它们的前导零。我知道我可以使用TrimStart()
,但如果所有数字都为零,那就错了。
$Test = "00000.22"
$Test = $Test.trimstart('0')
结果是.22,我期望的是0.22。我怎样才能实现它?谢谢。
答案 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