请告诉我如何从变量中删除货币格式(可能被视为字符串)。
如何从变量中删除货币格式并将其转换为真实数字?
谢谢。
例如
PS C:\Users\abc> $a=($464.00)
PS C:\Users\abc> "{0:N2}" -f $a
<- returns blank
然而
PS C:\Users\abc> $a=-464
PS C:\Users\abc> "{0:C2}" -f $a
($464.00) <- this works
答案 0 :(得分:1)
编程语言PowerShell并不“知道”什么是金钱或货币 - PowerShell看到的是变量名称($464
)和不存在的属性引用(.00
) ,所以$a
最终没有任何价值。
如果表格中有一个字符串:$00.00
,您可以通过编程方式执行以下操作:
# Here is my currency amount
$mySalary = '$500.45'
# Remove anything that's not either a dot (`.`), a digit, or parentheses:
$mySalary = $mySalary -replace '[^\d\.\(\)]'
# Check if input string has parentheses around it
if($mySalary -match '^\(.*\)$')
{
# remove the parentheses and add a `-` instead
$mySalary = '-' + $mySalary.Trim('()')
}
到目前为止一切顺利,现在我们有字符串500.45
(如果输入为-500.45
,则为($500.45)
)。
现在,您可以执行一些操作将字符串转换为数字类型。
您可以使用[double]
方法将其显式转换为Parse()
:
$mySalaryNumber = [double]::Parse($mySalary)
或者您可以依靠PowerShell使用一元+
执行隐式转换为适当的数字类型:
$mySalaryNumber = +$mySalary