【VB.Net】Mid関数を使った文字列内の情報を抽出する方法

どうも!リョクちゃです。

プログラムを作っていて、ふとこんなことに悩まされることはありませんか?

入力値として受け取った文字列に複数の情報が含まれていて、

これをそれぞれ文字列内から取り出して処理をするといった

問題に直面することがないでしょうか。

そんな時に使えるのがMid関数になります。

今回は、Mid関数と呼ばれる関数について紹介をしていきます。

ちなみに前回はこちら

VB.Netで2進数を10進数に変換する関数を作成していく過程で、2進数から10進数に変換する方法を例を交えて紹介しています。



Mid関数とは

  • 第1引数に、抽出したい文字列を指定
  • 第2引数に、開始位置(1から)を指定
  • 第3引数に、抽出する文字列の長さを指定(※省略可能)

これらを指定することで第1引数の文字列から指定の位置の長さを持つ文字列を抽出し、

戻り値として返してくれる関数になります。

Mid関数の書き方

書き方としては、

Mid(“抽出したい文字列”、抽出開始位置、[抽出する文字列の長さ])

と書くことで使うことができます。

実際に例に則って使い方を学んでいきましょう。

準備編:フォームの作成

今回は以下のフォームを作成します。

入力値から情報を3つ抽出し表示するプログラムを作成していきます。

スポンサーリンク




実行環境

筆者の実行環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.1

になります。

※ Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。

アプリケーションの目的

適当な入力値を入力し、ボタンを押すことでそれぞれ指定の位置から情報を抽出し、

それぞれ抽出した情報を表示することを目的とします。

プログラム編

それではプログラムを作成していきます。

まずは、フォームデザイン上でボタンコントロールをダブルクリックし、

コードビューにボタンイベントを作成します。

入力値ボックスに入力がされていれば処理をするようにします。

ここからは抽出するための準備をしていきます。

考え方として、入力値に既に含まれる情報がわかっている場合、

今回は、入力される文字列には、

所在地コード、電話番号、氏名コードの順番に18桁の情報が含まれているとします。

それを踏まえて下準備をすると、以下のコードになります。

定数として、各情報の桁数(文字列の長さ)を代入しています。

これら定数を元に入力値から各情報を抽出するコードを書いていきます。

各作成した変数(place,tele,name)に入力値から抽出した情報を代入しています。

各変数を例に説明していくと、

place変数には所在地コードを入力値から抽出して代入しています。

抽出方法としては、

Mid(入力値、1、PlaceCode)

とそれぞれ引数を渡すことで、

入力値の1文字目から長さ3の文字を抽出し代入しています。

tele変数には電話番号を入力値から抽出して代入しています。

これは、

Mid(入力値、PlaceCode + 1、TeleCode)

とそれぞれ渡すことで、

入力値のPlaceCodeの長さ+1をした位置から長さ10の文字を抽出し代入しています。

+1をしているのは開始位置が0からではなく1からになるためにその分の調整になります。

+1をしないで抽出をしてしまうと、PlaceCodeの最後の文字を開始位置とし、

抽出してしまいます。

開始位置に関しては、あらかじめ位置がわかっている場合は、

定数として宣言した各桁数を順番に足し合わせて最後に+1

をしてあげることで正確に抽出をすることができます

ただし、これは入力値に含まれる各情報が固定値の場合に有効です。

抽出した値は各テキストボックスに表示をします。

これでコードは完成です。

実行編

先ほど作成したコードを実行していきます。

入力値欄に、「777991234567866574」と入力し、ボタンを押します。

ボタンを押すと、それぞれ入力値から抽出した情報を各テキストボックスに表示がされます。



まとめ

Mid関数について、使い方や抽出における考え方を例を交えて紹介していきました。

Mid関数はExcelでもサポートされているので、

知っている読者の方も多かったのではないでしょうか。

知っているけどどうやって使っていいのかわからない、

そんな読者の方の参考になればと思っております。

ぜひ、この記事をきっかけに使い方を学んでいただけたら嬉しいです。

最後までご覧いただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク