В Powershell, как я могу преобразовать строку с конечным знаком в число? - PullRequest
6 голосов
/ 19 ноября 2008

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

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

  • 1000-
  • 323 +
  • 456

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

Ответы [ 4 ]

5 голосов
/ 19 ноября 2008

РЕДАКТИРОВАТЬ: согласно предложению Halr9000

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

[int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
2 голосов
/ 19 ноября 2008
[System.Globalization.NumberStyles]::AllowTrailingSign

Я также должен отметить, что когда я имею дело с перечислениями в целом, иногда я могу получить, набрав строку Например. в этом случае просто поставьте

"AllowTrailingSign"

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

[System.Globalization.NumberStyles] | gm -static
1 голос
/ 19 ноября 2008

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

$type = [System.Globalization.NumberStyles]
[enum]::GetValues($type)
0 голосов
/ 19 ноября 2008

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

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

...