「+81」または「81」で始まる日本の国番号付き電話番号を、国内表記の「0」に変換する関数
タイトルの関数は、以下です。
'********************************************************
'* 関数名: ReplaceCountryCodeWithZero
'* 説明 : 「+81」または「81」で始まる日本の国番号付き電話番号を、国内表記の「0」に変換します。
'* 例: "+819012345678" → "09012345678"
'*
'* 引数:
'* strTarget [String] - 処理対象の電話番号文字列
'*
'* 戻り値:
'* [String] - 変換後の文字列(先頭の「+81」または「81」が「0」に置換された結果)
'*
'* 注意点:
'* - 先頭が「+81」または「81」の場合のみ変換対象です。
'* - 中間に現れる「81」は変換されません。
'* - 正規表現を使用するため、参照設定で「Microsoft VBScript Regular Expressions 5.5」を有効にしてください。
Function ReplaceCountryCodeWithZero(ByVal strTarget As String) As String
Dim strPattern As String ' 正規表現パターンを格納する変数
Dim objRegEx As New RegExp ' 正規表現オブジェクト
' 正規表現パターンの定義
' ^ : 文字列の先頭
' (\+81|81) : 「+81」または「81」に一致する
strPattern = "^(\+81|81)"
' 正規表現オブジェクトのプロパティを設定
objRegEx.Pattern = strPattern ' パターンを設定
objRegEx.Global = False ' 最初の一致のみ対象
objRegEx.IgnoreCase = True ' 大文字・小文字の区別を無視(念のため)
' 正規表現が一致するかをチェック
If objRegEx.Test(strTarget) Then
' 一致部分(「+81」または「81」)を「0」に置換
strTarget = Replace(strTarget, objRegEx.Execute(strTarget)(0).Value, "0")
End If
' 正規表現オブジェクトの解放(メモリ管理)
Set objRegEx = Nothing
' 変換結果を関数の戻り値として返す
ReplaceCountryCodeWithZero = strTarget
End Function
✅ 使用例(結果)
入力 | 出力 |
---|---|
+819012345678 | 09012345678 |
819012345678 | 09012345678 |
09012340818 | 09012340818 (変化なし) |
参考・補足
- 正規表現の
^(\+81|81)
は 「先頭に+81または81がある」 という条件で、国際番号の一部を日本の携帯番号形式に変換します。 StrReplace
ではなく、RegExp.Execute().Item(0).Value
を使って 最初のマッチだけを置換 するようにしています。- グローバル一致(全体置換)は不要なため、
Global = False
を明示。