如何在 PowerShell 中將字符串轉換為整數

在 PowerShell 中,知道如何將字串轉換為整數是一項寶貴的技能。這個教程將教你如何在 PowerShell 中將字串轉換為整數。
我們將研究使用 [int]
和 [System.Int32]
來執行這種轉換的技巧,讓你可以輕鬆修改你的數據。
使用 [int]
將字串轉換為整數
在 PowerShell 中,我們可以使用 [int]
將字串轉換為整數。這稱為類型轉換或類型轉換。
以下語法是一個簡單的賦值語句,我們將字串轉換為整數並將結果賦值給變數 $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]
將字串轉換為整數
[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 可以自行檢測變數的資料類型。
我們不需要具體指定資料類型並聲明變數。但是,我們可以在變數之前定義資料類型,以便強制類型。
讓我們舉一個例子。
[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
的資料類型,使用 $data.GetType().Name
。
輸出:
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 中實現文字與數字之間的轉換。
通過控制變數類型,你可以在腳本中獲取準確性和靈活性。