如何在 PowerShell 中将字符串转换为整数
-
使用
[int]
将字符串转换为整数在 PowerShell 中 -
使用
[System.Int32]
将字符串转换为整数在 PowerShell 中 - 定义变量的数据类型以将字符串转换为整数在 PowerShell 中
- 结论

在 PowerShell 中,知道如何将字符串转换为整数是一项宝贵的技能。本教程将教你如何在 PowerShell 中将字符串转换为整数。
我们将研究使用 [int]
和 [System.Int32]
进行此转换的技术,使您能够轻松修改数据。
使用 [int]
将字符串转换为整数在 PowerShell 中
在 PowerShell 中,我们可以使用 [int]
将字符串转换为整数。这被称为类型转换或类型转换。
以下语法是在 PowerShell 中的简单赋值语句,我们将字符串转换为整数,并将结果赋值给变量 $integerVariable
。
语法:
$integerVariable = [int]$stringVariable
参数:
$integerVariable
:这是在转换后将保存整数值的变量。[int]
:这用于将$stringVariable
的值类型转换为整数。$stringVariable
:这是另一个包含要转换为整数的字符串的变量或表达式。
让我们考虑一个变量 $a
,如下所示。
$a = 123
$a
的数据类型是 integer
。
$a.GetType().Name
输出:
Int32
但是当我们用" "
括起来时,数据类型将变为 string
。
$b = "123"
$b.GetType().Name
输出:
String
要将字符串($b = "123"
)数据类型转换为整数,我们可以使用 [int]
,如下所示。
$b = $b -as [int]
$b.GetType().Name
在上面的代码中,我们从变量 $b
开始。此时我们不知道 $b
的当前值和数据类型,但我们希望确保将其视为整数。
接下来,使用 $b -as [int]
,我们使用 -as
操作符进行安全的类型转换。它尝试将 $b
的值转换为指定类型 [int]
。
如果可以转换,结果将分配回 $b
。如果不行,$b
保持不变。
在下一行中,我们使用 $b.GetType().Name
来确定变量 $b
在类型转换操作后的数据类型。
现在,让我们来看一下具有特定值和类型的变量 $b
会发生什么:
-
如果
$b
最初包含一个整数(例如,$b = 42
),代码将不会更改其类型,输出将为Int32
。 -
如果
$b
最初包含一个可以成功转换为整数的字符串(例如,$b = "123"
),代码将其类型更改为整数,输出将为Int32
。 -
如果
$b
最初包含一个无法转换为整数的字符串(例如,$b = "hello"
),代码将不会更改其类型,输出将是原始值的类型,在这种情况下是字符串,因此输出将为String
。
输出:
Int32
给定输出 Int32
意味着变量 $b
的初始值(在此代码片段之前)要么是整数,要么是可以成功转换为整数的字符串。
使用 [System.Int32]
将字符串转换为整数在 PowerShell 中
[System.Int32]
是一种类型转换形式,可以在 PowerShell 中将字符串转换为整数,明确告知 PowerShell 将变量或表达式视为 Int32
数据类型。
在语法中,我们将 $stringValue
中的字符串转换为整数,并将结果存储在 $intValue
中。这是通过使用 [System.Int32]
语法来指定所需的数据类型,使 $stringValue
可以进行数值操作。
语法:
$intValue = [System.Int32]$stringValue
在代码中,我们首先将一个名为 $stringValue
的字符串变量设置为值"456"
。然后,我们继续使用 [System.Int32]
将此字符串转换为整数,并将结果存储在另一个变量 $intValue
中。
在此转换后,我们使用 $intValue.GetType().Name
查询变量 $intValue
的数据类型。
输出:
Int32
输出告诉我们变量 $intValue
包含一个整数,具体来说是一个 32 位整数,因为 Int32
是数据类型的名称。
定义变量的数据类型以将字符串转换为整数在 PowerShell 中
PowerShell 可以自动检测变量的数据类型。
我们不需要具体指定数据类型并声明一个变量。但是,我们可以在变量之前定义数据类型,以便强制变量的数据类型。
让我们给一个例子。
[int]$c = "456"
$c.GetType().Name
在上面的代码中,我们这样声明变量并初始化:[int]$c = "456"
。这一行告诉 PowerShell 明确将字符串"456"
转换为整数,并将结果存储在变量 $c
中。
接下来,我们想了解变量 $c
的数据类型,因此我们使用 $c.GetType().Name
。这是我们检查类型转换是否成功的方式。
输出:
Int32
上面的输出为 Int32
,表明字符串"456"
已被转换为整数。但是,如果您尝试将一个整数数据类型强制转换为字符串值,则会得到错误,如以下代码示例中所示。
[int]$data = "storage"
$c.GetType().Name
在上面的代码中,我们首先声明一个名为 $data
的变量,并将字符串值"storage"
赋值给它。下一行 [int]$data
表示强行将字符串"storage"
转换为整数数据类型的尝试。
现在,我们将使用 $data.GetType().Name
检查变量 $data
的数据类型。
输出:
Cannot convert value "storage" to type "System.Int32". Error: "Input string was not in a correct format."
At line:1 char:1
+ [int]$data = "storage"
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException
我们尝试使用 [int]
将其强制转换为整数。然而,由于字符串"storage"
无法转换为整数,PowerShell 不会更改变量的类型,并返回错误消息"Input string was not in a correct format."
。
结论
在本文中,我们学习了如何使用 [int]
和 [System.Int32]
将字符串转换为整数。现在,我们可以轻松地在 PowerShell 中在文本和数字之间切换。
通过控制变量类型,您可以获得更高的准确性和灵活性。