繁体   English   中英

Powershell 将字符串转换为整数

[英]Powershell Converting String to Integer

这类似于我的最后一个问题,但有一个小的变化。 再一次,我似乎无法克服转换。

$myVar = "4MB"
$myVarInt = ([convert]::ToInt32($myVar, 10))*1MB

$myVarInt

给出错误:使用“2”个参数调用“ToInt32”的异常:“其他不可解析的字符位于字符串的末尾。”

我认为这是引起问题的 $myVar 上的引号。 我怎样才能让它发挥作用?

$myVar 变量中有一个包含字符的字符串。 字符串是否只包含数字应该无关紧要,但如果它包含任何字符,则会抛出该错误。

# This works
$myVar = "10"
$myVarInt = ([convert]::ToInt32($myVar, 10))*1MB
$myVarInt    
> 10485760

# This does not work
$myVar = "10t"
$myVarInt = ([convert]::ToInt32($myVar, 10))*1MB
Exception calling "ToInt32" with "2" argument(s): "Additional non-parsable characters are at the end of the string."
At line:1 char:1
+ $myVarInt = ([convert]::ToInt32($myVar, 10))*1MB
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : FormatException

您可以使用以下内容:

$myVarInt = [int]($myVar -replace '\D')*1MB

如果字符串包含数字和非数字的混合,您可以正则表达式匹配非数字与\\D -replace运算符用于用另一个字符串替换正则表达式匹配的字符。 -replace '\\D'的组合将用空字符串替换所有非数字,而不管它们在字符串中的位置。

默认情况下, [int]转换将尝试转换为Int32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM