【问题标题】:In Powershell how can I convert a string with a trailing 'sign' to a number?在 Powershell 中,如何将带有尾随“符号”的字符串转换为数字?
【发布时间】:2010-09-22 23:18:18
【问题描述】:

我需要使用 Powershell 将带有可选尾随符号的字符串转换为实际数字。

可能的字符串有:

  • 1000-
  • 323+
  • 456

我正在尝试将 System.Int.TryParse 与 AllowTrailingSign 的 NumberStyles 一起使用,但我不知道如何使 System.Globalization.NumberStyles 可用于 Powershell。

【问题讨论】:

    标签: powershell globalization type-conversion


    【解决方案1】:

    这是获取枚举值的更好方法:

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

    【讨论】:

    • 在我看来你的意思是:$type = [System.Globalization.NumberStyles];[enum]::GetValues($type);
    【解决方案2】:

    编辑:根据 Halr9000 的建议

    $foo = "300-";
    $bar = 0;
    $numberStyles = [System.Globalization.NumberStyles];
    $cultureInfo = [System.Globalization.CultureInfo];
    
    [int]::TryParse($foo, $numberStyles::AllowTrailingSign, $cultureInfo::CurrentCulture, [ref]$bar);
    

    【讨论】:

      【解决方案3】:
      [System.Globalization.NumberStyles]::AllowTrailingSign
      

      我还应该指出,当我处理一般的枚举时,有时我可以通过键入一个字符串来获得。例如。在这种情况下,只需放

      "AllowTrailingSign"
      

      最后一点,在对枚举进行所有可能值的测试时,请使用以下行:

      [System.Globalization.NumberStyles] | gm -static
      

      【讨论】:

        【解决方案4】:

        如果您确定符号可能是 - 或 +,String.Replace 可能会有所帮助。

        如果您的意思是 323- 应该返回 -323,检查符号并将其乘以 -1 会有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-10-08
          相关资源
          最近更新 更多