我有一个数组,其中捕获了来自WMI的一些驱动器数据:
$drivedata = $Drives | select @{Name="Kapazität(GB)";Expression={$_.Kapazität}}
阵列具有以下值(2个驱动器):
@{Kapazität(GB)=1.500} @{Kapazität(GB)=1.500}
只想把1.500转换成1500
我尝试了我在这里找到的不同建议,但无法让它工作:-Replace ".","" and [int]
不工作。我不确定regex是否正确以及如何操作。
6条答案
按热度按时间r3i60tvu1#
简单地将字符串转换为
int
并不可靠。您需要将其转换为int32
。为此,您可以使用.NETconvert
类及其ToInt32
方法。该方法需要string
($strNum
)作为主输入,而base number
(10
)作为要转换到的数制。这是因为您不仅可以转换到十进制(10
基数),而且还可以转换为例如二进制系统(基数为2)。给予这个方法:
qyyhg6bp2#
只需将包含数字的变量作为字符串除以1。PowerShell会自动将结果转换为整数。
$a = 15; $B = 2;$a + $B --〉152
但如果你把它分开:
a元/1 + B/1 --〉17
0qx6xfy63#
由于本主题从未收到过经过验证的解决方案,我可以提供一个简单的解决方案,以解决您要求解决的两个问题。
1.当值为字符串时替换.""字符
string类为要更新的string对象提供了一个replace方法:
示例:
1.将字符串值转换为整数
system.int32类(在powershell中简称为[int])有一个名为"TryParse"的方法,它不仅会传回一个布尔值,指示字符串是否为整数,而且如果返回true,还会通过引用将整数的值返回到现有变量中。
示例:
我希望这解决了你最初在问题中提出的问题。
6l7fqoea4#
我演示了如何接收一个字符串,例如“-484876800000”,并尝试解析该字符串以确保它可以被赋给一个long。我从通用时间计算日期并返回一个字符串。当你将一个字符串转换为一个数字时,你必须决定数字类型和精度,并测试字符串数据是否可以被解析,否则,它将抛出和错误。
tuwxkamq5#
替换字符串中除数字以外的所有字符,如下所示:
正则表达式
\D
将匹配除数字以外的所有内容,并将它们从字符串中删除。对于您的示例,这将非常有效。
wh6knrhe6#
问题似乎出在“-f($_.Partition.Size/1GB)}}”中,如果您想要以MB为单位的值,请将1GB更改为1 MB。