Question

Je dois convertir des chaînes avec des signes de fin facultatifs en nombres réels à l'aide de Powershell.

Les chaînes possibles sont les suivantes:

  • 1000 -
  • 323 +
  • 456

J'essaie d'utiliser System.Int.TryParse avec NumberStyles de AllowTrailingSign, mais je ne vois pas comment rendre System.Globalization.NumberStyles disponible pour Powershell.

Était-ce utile?

La solution

EDIT: selon la suggestion de Halr9000

$foo = "300-";
$bar = 0;
$numberStyles = [System.Globalization.NumberStyles];
$cultureInfo = [System.Globalization.CultureInfo];

[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);

Autres conseils

[System.Globalization.NumberStyles]::AllowTrailingSign

Je dois également souligner que, lorsque je traite d’énums en général, je peux parfois obtenir en tapant une chaîne. Par exemple. dans ce cas, il suffit de mettre

"AllowTrailingSign"

Note finale, lorsque vous interrogez un Enum sur toutes les valeurs possibles, utilisez la ligne:

[System.Globalization.NumberStyles] | gm -static

Voici un meilleur moyen d'obtenir les valeurs enum:

$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)

Si vous êtes certain que les signes peuvent être - ou +, String.Replace pourrait vous aider.

Si vous voulez dire que 323 devrait renvoyer -323, il serait utile de rechercher le signe et de le multiplier par -1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top