VB.NETで文字列を切り出す方法です。Substringメソッドを使います。末尾から切り出す方法も紹介します。
Substringメソッドを使って文字列を切り出す
VB.NETで文字列を切り出す時、Substringメソッドを使います。
Substringメソッドは引数を1つ指定する場合と2つ指定する場合があり、機能が少しだけ違います。
- 引数1つの場合:指定した文字位置から末尾まで切り出す
- 引数2つの場合:第1引数で指定した文字位置から、第2引数で指定した文字数分切り出す
文字で書かれても良く分からないと思いますので、実際にサンプルプログラムを作って動きを確認しましょう。
画面はこんな感じです。
上の段のテキストボックスとボタンは、Substringメソッドの引数が1つ、下の段のテキストボックスとボタンはSubstringメソッドの引数が2つの動きを見ます。
引数が1つの場合
Substringメソッドの引数が1つの場合、引数に渡した数値の文字位置から末尾までを切り出します。
引数に渡す値は「0」からスタートです。
サンプルコードはこちら。
Private Sub cmdSubstring1_Click(sender As Object, e As EventArgs) Handles cmdSubstring1.Click '切り出し開始位置の文字列をInteger型に変換 Dim iStarIndex As Integer = Integer.Parse(txtSubstring1Index.Text) '切り出し開始位置から末尾まで文字列を切り出し(0始まり) txtSubstring1After.Text = txtSubstring1Before.Text.Substring(iStarIndex) End Subこれr引数が2つの場合
これを実行します。
とりあえず入力値を「東京都」、切り出し開始位置を「1」にして実行ボタンを押下します。
結果は「京都」が切り出されます。
インデックス番号と文字列・切り出し対象の表としては次の様になります。
インデックス番号 | 0 | 1 | 2 |
文字 | 東 | 京 | 都 |
切り出し対象 | × | ○ | ○ |
ただし、注意が必要で、引数に渡す数字が0未満か、文字列の長さをオーバーした場合は、ArgumentOutOfRangeExceptionが発生するので、事前チェックを入れる必要があります。
引数が2つの場合
Substringメソッドの引数が2つの場合、第一引数と第二引数はこのようになっています。
- 第一引数:開始位置(0スタート)
- 第二引数:切り出し文字数(1スタート)
サンプルコードはこちら。
Private Sub cmdSubstring2_Click(sender As Object, e As EventArgs) Handles cmdSubstring2.Click '切り出し開始位置の文字列をInteger型に変換 Dim iStarIndex As Integer = Integer.Parse(txtSubstring2Index.Text) '切り出し文字数の文字列をInteger型に変換 Dim iLength As Integer = Integer.Parse(txtSubstring2Length.Text) '切り出し開始位置から指定した文字数の文字列を切り出し txtSubstring2After.Text = txtSubstring2Before.Text.Substring(iStarIndex, iLength) End Sub
これを実行します。
結果は「特許」が切り出されます。
インデックス番号と文字列・切り出し対象の表としては次の様になります。
インデックス番号 | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
文字 | 東 | 京 | 特 | 許 | 許 | 可 | 局 |
切り出し対象 | × | × | ○ | ○ | × | × | × |
これも注意が必要で、以下の場合に、ArgumentOutOfRangeExceptionが発生します。
- 「第一引数の数値 + 第二引数の数値」が文字列の長さを上回る
- 第一引数の数値 or 第二引数の数値が0未満
なので、こちらも事前チェックを入れる必要があります。
先頭から文字列を切り出す
Substringを用いて先頭から文字列を切り出す場合は、次の様にSubstringを記述します。
文字列.Substring(0, 切り出す文字数)
先頭から文字列を切り出したいので、第一引数は「0」で固定し、第二引数で先頭から何文字切り出したいかを指定します。
サンプルコードはこちら。
Private Sub cmdSubstringFront_Click(sender As Object, e As EventArgs) Handles cmdSubstringFront.Click '切り出し文字数の文字列をInteger型に変換 Dim iLength As Integer = Integer.Parse(txtSubstringFrontLength.Text) '切り出し開始位置から指定した文字数の文字列を切り出し txtSubstringFrontAfter.Text = txtSubstringFrontBefore.Text.Substring(0, iLength) End Sub
例えば、先頭から3文字切り出したいとしましょう。画面にはこの様に入力しています。
実行すると…
先頭から3文字切り出されたことが分かります。
文字列の末尾から文字を切り出す
Substringを用いて文字列の末尾から文字を切り出す場合は、次の様にSubstringを記述します。
文字列.Substring((文字列の長さ - 切り出したい文字数), 切り出したい文字数)
Substringの第一引数は先頭から数えるので、「文字列の長さ – 切り出したい文字数」を第一引数に渡します。
Substringの第二引数には、「切り出したい文字数」を渡します。
サンプルコードはこちら。
Private Sub cmdSubstringEnd_Click(sender As Object, e As EventArgs) Handles cmdSubstringEnd.Click '文字列の長さをInteger型に変換 Dim iStrLength As Integer = txtSubstringEndBefore.Text.Length '切り出したい文字数 Dim iLength As Integer = Integer.Parse(txtSubstringEndLength.Text) '切り出し開始位置から指定した文字数の文字列を切り出し txtSubstringEndAfter.Text = txtSubstringEndBefore.Text.Substring(iStrLength - iLength, iLength) End Sub
実行してみます。末尾から3文字を切り出してみましょう。
実行すると…
「東京特許許可局」の末尾「許可局」の3文字を切り出すことが出来ました。
末尾の1文字だけ切り出したい場合は、
文字列.Substring((文字列の長さ - 1), 1)
とすると、末尾の文字だけ切り出すことが出来ます。
参考リンク
.