PowerShell で文字列を整数に変換する方法
-
PowerShell で
[int]
を使用して文字列を整数に変換する -
PowerShell で
[System.Int32]
を使用して文字列を整数に変換する - PowerShell で文字列を整数に変換するための変数のデータ型を定義する
- 結論

PowerShell で文字列を整数に変換する方法を知ることは、貴重なスキルです。このチュートリアルでは、PowerShell で文字列を整数に変換する方法を説明します。
[int]
や [System.Int32]
を使用してこの変換を行う技術について見ていきます。これにより、データを簡単に変更できるようになります。
PowerShell で [int]
を使用して文字列を整数に変換する
PowerShell では、[int]
を使用して文字列を整数に変換できます。これを型キャスティングまたは型変換と呼びます。
以下の構文は、PowerShell での簡単な代入文で、文字列を整数に変換し、その結果を変数 $integerVariable
に代入しています。
構文:
$integerVariable = [int]$stringVariable
パラメータ:
$integerVariable
: これは変換後の整数値を保持する変数です。[int]
: これは$stringVariable
の値を整数に型キャストするために使用されます。$stringVariable
: これは整数に変換したい文字列を含む別の変数または式です。
次に、変数 $a
について考えてみましょう。
$a = 123
変数 $a
のデータ型は整数
です。
$a.GetType().Name
出力:
Int32
しかし、値を" "
で囲むと、データ型は文字列
になります。
$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
の初期値(このコードスニペットの前)が整数または整数に成功裏に変換できる文字列であったことを示唆しています。
PowerShell で [System.Int32]
を使用して文字列を整数に変換する
[System.Int32]
は、PowerShell で文字列を整数に変換する型キャスティングの一形態であり、変数または式を Int32
データ型として扱うことを PowerShell に明示的に指示します。
構文では、$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
のデータ型を確認するために $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 でテキストと数字の間を簡単に移行できるようになります。
変数の型を制御することで、スクリプトにおける精度と柔軟性が向上します。