Powershell - 从数字中删除货币格式

时间:2016-07-20 15:33:19

标签: powershell formatting currency

请告诉我如何从变量中删除货币格式(可能被视为字符串)。

如何从变量中删除货币格式并将其转换为真实数字?

谢谢。

例如

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

1 个答案:

答案 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