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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top