Как в Powershell преобразовать строку со знаком «знак» в конце в число?

StackOverflow https://stackoverflow.com/questions/300606

Вопрос

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

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

  • 1000-
  • 323+
  • 456

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

Это было полезно?

Решение

РЕДАКТИРОВАТЬ:по предложению 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"

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

[System.Globalization.NumberStyles] | gm -static

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top