SubstringVB.netにおいて文字列を一部切り出す際にSubstringメソッドを使用しますが
時には文字数が足りない場合にエラーが発生することがあります。
この記事ではそのエラーを回避する方法について解説します。
Substringメソッドの基本的な使い方
まず、Substringメソッドの基本的な使い方を確認しましょう。
このメソッドは指定した位置から指定した文字数分の部分文字列を取得します。
Dim originalString As String = "Hello, World!"
Dim subString As String = originalString.Substring(7, 5) ' "World"
上記の例では、originalStringから7番目の位置から始まり5文字分の部分文字列を取得しています。
文字数が足りない場合のエラー
しかし、もし指定した位置から指定した文字数分の文字列が元の文字列の範囲を超えてしまうと、ArgumentOutOfRangeExceptionが発生します。
Dim originalString As String = "Hello, World!"
Dim subString As String = originalString.Substring(12, 10) ' エラー
この場合、12番目の位置から始まる10文字分の文字列は存在しないためエラーが発生します。
文字数を範囲内に収めて回避する
エラーを回避するためには元の文字列の長さを確認し指定した位置からの文字数が範囲内に収まるようにします。
以下はその例です。
Dim originalString As String = "Hello, World!"
Dim startIndex As Integer = 12
Dim length As Integer = 10
If startIndex < originalString.Length Then
' 文字列を切り出し
Dim subString As String = originalString.Substring(startIndex, Math.Min(length, originalString.Length - startIndex))
Console.WriteLine(subString)
Else
' エラーが発生した場合の処理
Console.WriteLine("指定した範囲が文字列の長さを超えています。")
End If
このようにIf文を使用してエラーが発生しないように条件分岐を行います。
Math.Min関数を用いて指定した文字数が元の文字列の残りの文字数より大きくならないようにしています。
例外処理でエラー回避する
さらに、例外処理を追加してプログラムの安全性を向上させましょう。
Dim originalString As String = "Hello, World!"
Dim startIndex As Integer = 12
Dim length As Integer = 10
Try
' 文字列を切り出し
Dim subString As String = originalString.Substring(startIndex, Math.Min(length, originalString.Length - startIndex))
Console.WriteLine(subString)
Catch ex As ArgumentOutOfRangeException
' エラーが発生した場合の処理
Console.WriteLine("指定した範囲が文字列の長さを超えています。")
End Try
Try…Catch文を使用して、ArgumentOutOfRangeExceptionが発生した場合に例外処理を行います。
これによりプログラムがクラッシュすることなくエラーに対処できます。
Substring以外にも文字の切り出し方は色々あるので以下記事を参考にしてね!
まとめ
VB.netでSubstringメソッドを使用する際にはエラーが発生しないように元の文字列の長さを確認し適切な条件分岐を行うことが重要です。
これによってプログラムの安定性を向上させスムーズな開発を進めることができます。
是非、これらのテクニックを活かしてプログラミングを進めてみてください。