VB.NETで文字列から数値に変換する方法について書いています。
文字列から数値にするには、下記のメソッドを使うことができます。
・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メソッドでは変換できない文字列のときにエラーとなる。
・TryParseメソッドを使うと変換できなかった場合にはエラーにならない。(0初期化されるので注意)
数値しか入らないことがわかっているときには、Parseメソッドを使うと良いかと思います。
渡される値がわからなかったり、変換できたか判定したい場合などはTryParseメソッドを使っていきましょう。
コメント