Как в Powershell преобразовать строку с завершающим знаком в число?


Мне нужно преобразовать строки с необязательными конечными знаками в реальные числа с помощью Powershell.

Возможные строки:

  • 1000-
  • 323+
  • 456

Я пытаюсь использовать System. Int. TryParse с несколькими стилями AllowTrailingSign, но я не могу понять, как сделать System.Глобализация.NumberStyles, доступные для Powershell.

4 6

4 ответа:

Правка: согласно предложению Halr9000

$foo = "300-";
$bar = 0;
$numberStyles = [System.Globalization.NumberStyles];
$cultureInfo = [System.Globalization.CultureInfo];

[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
[System.Globalization.NumberStyles]::AllowTrailingSign
Я должен также отметить, что когда я имею дело с перечислениями вообще, иногда я могу получить, введя строку. Например, в этом случае просто положите
"AllowTrailingSign"

Последнее замечание, при опросе перечисления для всех возможных значений используйте строку:

[System.Globalization.NumberStyles] | gm -static

Вот лучший способ получить значения перечисления:

$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)

Если вы уверены, что знаки могут быть - или +, строка.Замена могла бы помочь.

Если вы имеете в виду, что 323 - должно возвращать -323, проверка знака и умножение его на -1 поможет.