String Powershell将字符串转换为整数
这与我的上一个问题相似,但有一点变化。 再一次,我似乎无法克服这种转变String Powershell将字符串转换为整数,string,powershell,type-conversion,integer,String,Powershell,Type Conversion,Integer,这与我的上一个问题相似,但有一点变化。 再一次,我似乎无法克服这种转变 $myVar = "4MB" $myVarInt = ([convert]::ToInt32($myVar, 10))*1MB $myVarInt 给出错误:使用“2”参数调用“ToInt32”时出现异常:“字符串末尾有其他不可解析字符。” 我假设这是$myVar上的报价引起的问题。 如何使其工作?在$myVar变量中有一个包含字符的字符串。如果字符串只包含数字,则不重要,但如果它包含任何字符,则会抛出该错误 # Thi
$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
,$myvar
包含什么?在不知道$myvar
的情况下,我会尝试[int]($myvar-替换'\d')*1MB
抱歉,更新了帖子。顶线被切断了@谢谢你,就这样!哇,你真棒。