この記事では、区切り文字の位置が可変な時に文字列の一部を取得する方法をお伝えします!

今回は区切り文字の位置が可変な文字列として、一般的な電話番号を例にしたいと思います。

一般的な電話番号は
『「0+市外局番(1~4桁)」―「市内局番(1~4桁)」―「加入者番号(4桁)」』
といった形で10桁から11桁の番号で構成されています。

『「0+市外局番(1~4桁)」―「市内局番(1~4桁)」』
は「国内あて先番号」といい、総務省が決めているもので、具体的には次のような電話番号のパターンが考えられます。



電話番号では、区切り文字(ハイフン)の位置がそれぞれ違う番号となっていることがわかります。

このような時に、「市外局番」「市内局番」「加入者番号」の3つに分けて数字を取得したいときのカスタマイズ方法を、この記事ではご紹介します。

またカスタマイズ方法については、正規表現を用いずに実現するパターンと、正規表現を用いて実現する方法がありますが、それぞれについてご紹介します。

正規表現を使わずに実現する方法

イメージ

カスタマイズ方法をお伝えする前に……

どんなイメージでカスタマイズをしていくのかを説明します。

区切り文字(ハイフン)の位置が違うのに
どうやって「市外局番」「市内局番」「加入者番号」
の3つに分けて数字を取得できるのでしょうか?

これは、次の図のようなイメージとなります。


ダミーのハイフンを追加することがコツです。

右側と左側の文字を取り出すのはright関数left関数でも可能なのですが、今回は「フィールド値の右側の文字を取り出す」「フィールド値の左側の文字を取り出す」という「やること」があるのでそちらを使います。

また、ハイフン1文字を5文字に変換したり、ハイフンを消したりするのは「フィールドの値の一部を文字列置換する」で実現できます。

カスタマイズ方法

「市外局番」の取り出し方

「市外局番」を取り出す時のカスタマイズは次のようになります。

アクション6のやること「フィールドの値の一部を文字列置換する」では
下記のように設定することで「1つ目のハイフン1つを6つに置換」しています。



置換前文字列:-
置換後文字列:------
複数ヒットした場合:すべて置換


また、アクション8のやること「フィールドの値の一部を文字列置換する」では
下記のように設定することで「ハイフンを削除」しています。



置換前文字列:-
置換後文字列:<入力されていません>
複数ヒットした場合:すべて置換


「市内局番」の取り出し方

「市内局番」を取り出す時のカスタマイズの全体は次のようになります。


アクション10のやること「フィールドの値の一部を文字列置換する」で 複数ヒットした場合のパラメータに「最初の1つだけ置換」を設定している所がポイントです。


「加入者番号」の取り出し方

「加入者番号」を取り出す時のカスタマイズの全体は次のようになります。

正規表現を使わない方法のまとめ

今回は電話番号を例にしましたが、区切り文字が可変な文字列に対しても
同様なカスタマイズを設定することで一部の文字が取得可能です。

電話番号以外で上記のカスタマイズを行うときは、


・ハイフンを置換前の桁数よりも多めになるような数へ置換

・ハイフンの後の桁数より多めになる文字数を取り出す

・ハイフンを空欄に置換する


こちらのポイントに注意しつつ、置換するハイフンの数や取り出す文字数を工夫してみてください。


正規表現を使う方法

やること「正規表現を用いてフィールドの値を置換する」を使って置換する方法もあります。

なお、やること「正規表現を用いてフィールドの値を置換する」をご利用いただくためには、正規表現の知識が必要となります。

当Tipsでは正規表現の例をご紹介しますが、ご利用の際は必ず動作確認を行ってからご利用ください。


やること「正規表現を用いてフィールドの値を置換する」を使うと次のようになります。


また、サンプルの正規表現についての解説は行いません。


チャットサポートでも正規表現の書き方に関するご質問はお受けできない為、正規表現の書き方について興味をお持ちの方は、正規表現について紹介されているWebサイトや書籍をご参照ください。


同じ目的の正規表現でも、当Tipsでご紹介している以外の記載方法がある場合があります。

実現されたい置換処理が可能となるように、様々な書き方を試してみてくださいね。