Em PowerShell Como posso converter uma string com um arrasto 'sinal' para um número?
-
08-07-2019 - |
Pergunta
Eu preciso converter cordas com sinais de arrasto opcionais em números reais usando o PowerShell.
cordas possíveis são:
- 1000 -
- 323 +
- 456
Eu estou tentando usar System.Int.TryParse com um NumberStyles de AllowTrailingSign, mas eu não posso trabalhar para fora como fazer System.Globalization.NumberStyles disponíveis para PowerShell.
Solução
EDIT: como por sugestão de Halr9000
$foo = "300-";
$bar = 0;
$numberStyles = [System.Globalization.NumberStyles];
$cultureInfo = [System.Globalization.CultureInfo];
[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
Outras dicas
[System.Globalization.NumberStyles]::AllowTrailingSign
Gostaria também de salientar, que quando eu estou lidando com enums em geral, às vezes posso obter digitando uma string. Por exemplo. Neste caso, basta colocar
"AllowTrailingSign"
Nota final, quando interrogando um Enum para todos os valores possíveis, use a linha:
[System.Globalization.NumberStyles] | gm -static
Aqui está uma maneira melhor para obter os valores de enumeração:
$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)
Se você tem certeza de que os sinais poderiam ser -. Ou +, String.Replace poderia ajudar
Se você quer dizer que 323- deve retornar -323, verificando o sinal e multiplicando-o por -1 ajudaria.