2016-07-20 22 views
0

können Sie mir bitte sagen, wie Sie Währungsformatierung von einer Variablen entfernen (die wahrscheinlich als String behandelt wird).Powershell - entfernen Sie Währungsformatierung von einer Nummer

Wie entferne ich die Währungsformatierung von einer Variablen und wandle sie in eine echte Zahl um?

Vielen Dank.

Beispiel

PS C:\Users\abc> $a=($464.00) 
PS C:\Users\abc> "{0:N2}" -f $a 
         <- returns blank 

jedoch

PS C:\Users\abc> $a=-464 
PS C:\Users\abc> "{0:C2}" -f $a 
($464.00)     <- this works 
+0

PowerShell, die Programmiersprache, "weiß" nicht, was Geld oder Währung ist - alles, was PowerShell sieht, ist ein Variablenname ('$ 464') und eine Eigenschaftsreferenz (' .00'), die nicht existiert, also '$ a' endet mit keinem Wert e. –

+0

Bearbeiten: Quellvariable kann negativ sein, in diesem Format ($ 464,00) oder positiv, in diesem Fall kann es $ 1,234.00 sein. Grundsätzlich als Währung formatiert von Excel. Müssen Sie es in eine richtige Dezimalzahl konvertieren. Danke, –

+0

@ MathiasR.Jessen hab es geschafft .. kannst du irgendeine Lösung anbieten? –

Antwort

1

Powershell, die Programmiersprache, „weiß“ nicht, was Geld oder Währung ist - alles sieht Powershell ist ein Variablenname ($464) und eine Eigenschaft Referenz (.00), die nicht existiert, so $a endet mit keinem Wert.

Wenn Sie eine Zeichenfolge in der Form haben: $00.00, was Sie können programmatisch tun ist:

# 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('()') 
} 

bisher so gut, jetzt haben wir die Zeichenfolge 500.45 (oder -500.45 wenn Eingang ($500.45) war).

Jetzt gibt es ein paar Dinge, die Sie tun können, um eine Zeichenfolge in einen numerischen Typ zu konvertieren.

Sie könnten explizit wandeln es in ein [double] mit dem Parse() Methode:

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

Oder Sie könnten auf Powershell verlassen eine implizite Konvertierung auf einen geeigneten numerischen Typ mit einem unären + ausführen:

$mySalaryNumber = +$mySalary 
+0

Ok toll - fast da. Können Sie ein Snippet bereitstellen, um auch Negative zu konvertieren? (464,00 $) bis -464,00. Das ist alles was ich brauche. Vielen Dank. –

+0

@AgamSingh aktualisierte Antwort –

+0

wird so schnell wie möglich versuchen. Vielen Dank. –