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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top