Dans Powershell, comment puis-je convertir une chaîne avec un dernier signe en un nombre?
-
08-07-2019 - |
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.
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.