In Powershell come posso convertire una stringa con un 'segno' finale in un numero?
-
08-07-2019 - |
Domanda
Devo convertire le stringhe con segni finali opzionali in numeri reali usando Powershell.
Le stringhe possibili sono:
- 1000 -
- 323 +
- 456
Sto cercando di utilizzare System.Int. TryParse con un NumberStyles di AllowTrailingSign, ma non riesco a capire come rendere System.Globalization.NumberStyles disponibile per Powershell.
Soluzione
EDIT: secondo il suggerimento di Halr9000
$foo = "300-";
$bar = 0;
$numberStyles = [System.Globalization.NumberStyles];
$cultureInfo = [System.Globalization.CultureInfo];
[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
Altri suggerimenti
[System.Globalization.NumberStyles]::AllowTrailingSign
Dovrei anche sottolineare che quando ho a che fare con enum in generale, a volte posso ottenere digitando una stringa. Per esempio. in questo caso, basta inserire
"AllowTrailingSign"
Nota finale, quando si richiede un Enum per tutti i valori possibili, utilizzare la riga:
[System.Globalization.NumberStyles] | gm -static
Ecco un modo migliore per ottenere i valori enum:
$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)
Se sei sicuro che i segni potrebbero essere - o +, String.Replace potrebbe aiutare.
Se vuoi dire che 323- dovrebbe restituire -323, controllare il segno e moltiplicarlo per -1 sarebbe utile.