En Powershell, ¿cómo puedo convertir una cadena con un 'signo' final en un número?
-
08-07-2019 - |
Pregunta
Necesito convertir cadenas con signos finales opcionales en números reales usando Powershell.
Las cadenas posibles son:
- 1000-
- 323+
- 456
Estoy tratando de usar System.Int. TryParse con un NumberStyles de AllowTrailingSign, pero no sé cómo hacer que System.Globalization.NumberStyles esté disponible para Powershell.
Solución
EDITAR: según la sugerencia de Halr9000
$foo = "300-";
$bar = 0;
$numberStyles = [System.Globalization.NumberStyles];
$cultureInfo = [System.Globalization.CultureInfo];
[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
Otros consejos
[System.Globalization.NumberStyles]::AllowTrailingSign
También debo señalar que cuando trato con enumeraciones en general, a veces puedo obtener escribiendo una cadena. P.ej. en este caso, solo pon
"AllowTrailingSign"
Nota final, cuando cuestione una enumeración para todos los valores posibles, use la línea:
[System.Globalization.NumberStyles] | gm -static
Aquí hay una mejor manera de obtener los valores de enumeración:
$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)
Si está seguro de que los signos podrían ser - o +, String.Replace podría ayudar.
Si quiere decir que 323- debería devolver -323, verificar el signo y multiplicarlo por -1 ayudaría.