2016-07-20 8 views
0

(おそらく文字列として扱われる)変数から通貨書式を削除する方法を教えてください。Powershell - 数字から通貨書式を削除する

変数から通貨書式を取り除き、それを真の数値に変換するにはどうすればよいですか?

ありがとうございます。

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

プログラミング言語であるPowerShellは、金額や通貨が何であるかを「知っていません」 - PowerShellには変数名( '$ 464')と存在しないプロパティ参照(' .00')があるので、 '$ a'無価値で終わるe。 –

+0

編集:ソース変数は負(この形式($ 464.00)または正の場合は$ 1,234.00)にすることができます。基本的には、Excelでフォーマットされた通貨です。それを適切な小数に変換する必要があります。ありがとう、 –

+0

@ MathiasR.Jessenそれを得ました。あなたはどんな解決策も提供できますか? –

答えて

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を持って、とても良いです。

ここでは、文字列を数値型に変換するためにできることがいくつかあります。

あなたが明示的にParse()方法で[double]に変換できます。

$mySalaryNumber = [double]::Parse($mySalary) 

それとも、単項+で適切な数値型に暗黙的な変換を実行するPowerShellのに頼ることができる:

$mySalaryNumber = +$mySalary 
+0

大丈夫 - ほとんどあります。ネガも変換するスニペットを提供できますか? ($ 464.00)〜-464.00です。それが私が必要なものすべてです。どうもありがとう。 –

+0

@AgamSingh更新の回答 –

+0

はできるだけ早く試してみます。どうもありがとう。 –

関連する問題