Powershell:将字符串转换为数字

MMA*_*MAX 34 string powershell

好吧,我是初学者 - 并且迷失了:

我有一个数组,其中捕获了来自WMI的一些驱动器数据:

$drivedata = $Drives | select  @{Name="Kapazität(GB)";Expression={$_.Kapazität}}
Run Code Online (Sandbox Code Playgroud)

Array具有这些值(2个驱动器):

@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}
Run Code Online (Sandbox Code Playgroud)

并且只想将1.500转换为1500

我尝试了我在这里找到的不同建议,但无法使其正常工作:

-Replace ".","" and [int] 不起作用.我不确定正则表达式是否正确以及如何执行此操作.

非常感谢您的帮助.

Rod*_*ant 51

简单地将字符串转换为int无法可靠地工作.你需要将它转换为int32.为此,您可以使用.NET convert类及其ToInt32方法.该方法需要a string($strNum)作为主输入,并且base number(10)用于转换为的数字系统.这是因为你不仅可以转换为十进制系统(10基数),而且,例如,二进制(基数为2).

试试这个方法:

[string]$strNum = "1.500"
[int]$intNum = [convert]::ToInt32($strNum, 10)

$intNum
Run Code Online (Sandbox Code Playgroud)

  • 当字符串不是int时会发生什么...这会爆炸吗? (3认同)

小智 23

只需将包含Number的数字作为字符串除以1. PowerShell会自动将结果转换为整数.

$ a = 15; $ b = 2; $ a + $ b - > 152

但如果你之前分开它:

$ a/1 + $ b/1 - > 17


clo*_*ero 9

由于这个主题从未收到过经过验证的解决方案,因此我可以提供一个简单的解决方案来解决我看到您提出的解决方

  1. 替换"." value是字符串时的字符

字符串类为要更新的字符串对象提供替换方法:

例:

$myString = $myString.replace(".","") 
Run Code Online (Sandbox Code Playgroud)
  1. 将字符串值转换为整数

system.int32类(或者简称PowerShell中的[int])有一个名为"TryParse"的方法,它不仅会传回一个布尔值,指示字符串是否为整数,还会将整数的值返回给现有的如果返回true,则通过引用变量.

例:

[string]$convertedInt = "1500"
[int]$returnedInt = 0
[bool]$result = [int]::TryParse($convertedInt, [ref]$returnedInt)
Run Code Online (Sandbox Code Playgroud)

我希望这能解决您最初在问题中提出的问题.