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)
小智 23
只需将包含Number的数字作为字符串除以1. PowerShell会自动将结果转换为整数.
$ a = 15; $ b = 2; $ a + $ b - > 152
但如果你之前分开它:
$ a/1 + $ b/1 - > 17
由于这个主题从未收到过经过验证的解决方案,因此我可以提供一个简单的解决方案来解决我看到您提出的解决方
字符串类为要更新的字符串对象提供替换方法:
例:
$myString = $myString.replace(".","")
Run Code Online (Sandbox Code Playgroud)
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)
我希望这能解决您最初在问题中提出的问题.