VB.NETで文字列から数値に変換する2つの方法!

VB.NET VB.NET

VB.NETで文字列から数値に変換する方法について書いています。
文字列から数値にするには、下記のメソッドを使うことができます。

・Parseメソッド
・TryParseメソッド

載せているコードについては、.Netのバージョン7で確認しました。

Parseメソッドで変換する

Parseメソッドを使うことで、文字列から数値に変換することができます。
例えば、下記のように使うことができます。

Dim testNumber1 As Byte = Byte.Parse("10")
Dim testNumber2 As Integer = Integer.Parse("100")
Dim testNumber3 As Long = Long.Parse("999")

Console.WriteLine(testNumber1.GetType()) ' System.Byte
Console.WriteLine(testNumber1) ' 10

Console.WriteLine(testNumber2.GetType()) ' System.Int32
Console.WriteLine(testNumber2) ' 100

Console.WriteLine(testNumber3.GetType()) ' System.Int64
Console.WriteLine(testNumber3) ' 999

最初の3行で変数を定義していますが、そこでそれぞれの型からParseメソッドを呼んでいます。
Byte・Integer・Longの型からParseメソッドを呼んで、渡している文字列を数値に変換しています。

ByteのParseメソッドに文字列の「10」を渡して、数値の「10」に変換しています。
同じようにして、Integer・LongからParseメソッドを使って、文字列から数値に変換しました。

その後にそれぞれ変数をGetTypeメソッドを呼び出して、型を出力しました。
一緒に値も出力しています。

下記のように、変換されていることが確認できました。

System.Byte
10
System.Int32
100
System.Int64
999

変換できないときにはエラーになる

Parseメソッドを使ったときに、文字列から数値に変換できない場合にはエラーになります。
例えば、下記のように変換できない、数値ではない文字列を渡したときです。

Dim testNumber As Integer = Integer.Parse("hello")

数値ではない文字列の「hello」を渡しているので、下記のようにエラーになります。

Unhandled exception. System.FormatException: The input string 'hello' was not in a correct format.

入力文字列が正しい形式でないのでエラーとなっています。
Parseメソッドを使うと、このようにエラーになってしまうので、渡す文字列が数値なのか注意が必要です。

次項のTryParseメソッドを使うと、入力文字列が正しくない場合にはエラーにならないようにすることができます。

TryParseメソッドで変換する

TryParseメソッドを使うことでも、文字列から数値に変換できます。
Parseメソッドと違って、変換できない場合はエラーになりません。

例えば、下記のような場合です。

Dim number As Integer = 1
Dim result As Boolean = Integer.TryParse("hello", number)

Console.WriteLine(result) ' False
Console.WriteLine(number.GetType()) ' System.Int32
Console.WriteLine(number) ' 0

最初にnumber変数に数値の「1」を入れて定義しました。

次の行で、TryParseメソッドをIntegerから呼んで使っています。
第1引数に渡すのが変換したい数値の文字列で、第2引数に渡すのが変換後に結果を入れたい変数です。
実行した後に戻ってくるのは、変換できたかの真理値(True/False)になります。

今回は変換できない「hello」を第1引数に設定しているので変換されません。
変換できないので、結果としてresult変数にはFalseが返ってきます。

それぞれの変数の内容を出力すると、下記のようになりました。

False
System.Int32
0

変換できなかった場合には、第2引数に渡したnumber変数の値が0になってしまうので注意が必要です。
hello」を渡している箇所を「777」にすると、下記のように結果が出力されます。

True
System.Int32
777

number変数の値として、「777」が設定されて、変換できたのでresult変数にTrueが返ってきました。
このようにTryParseメソッドを使うと、変換できない場合でもエラーになりません。

VB.NETで文字列から数値への変換まとめ

今回はVB.NETで文字列から数値に変換する方法について書きました。
記事の内容をまとめると、下記のようになります。

・それぞれの型からParseメソッドを呼ぶことで、文字列を変換することができた。
・Parseメソッドでは変換できない文字列のときにエラーとなる。
・TryParseメソッドを使うと変換できなかった場合にはエラーにならない。(0初期化されるので注意)

数値しか入らないことがわかっているときには、Parseメソッドを使うと良いかと思います。
渡される値がわからなかったり、変換できたか判定したい場合などはTryParseメソッドを使っていきましょう。

コメント

タイトルとURLをコピーしました