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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top