お世話になります。
現在、Visual Studio 2008を使用して文字列データの取得プログラムを作成しております。
対象となるデータに電話番号が入っているのですが、
複数の電話番号が登録されている場合、連結された状態で登録がされております。
そのため、連結した状態で保存されている電話番号を最終的に別々の変数に分けて登録したいと考えております。
尚、複数の電話番号が登録されている場合、固定電話番号と携帯電話番号がランダムで連結されているので
連結されている電話番号の組み合わせとしては以下があります。
固定電話番号+固定電話番号
固定電話番号+携帯電話番号
携帯電話番号+固定電話番号
携帯電話番号+携帯電話番号
現状ですが、作成したプログラムでは文字列の最初の3文字を取得し、
それで携帯電話番号かどうかを判別し、その結果を最初の変数に代入します。
その後、今取得した番号はREPLACEにて削除して、残った文字列を再度チェックし、
変数に代入するという流れで考えております。
しかし、実際のプログラムを実行しますと、最初のLeft関数では指定した文字数分の文字を取得し、
その後のチェックにより1個目の電話番号が固定電話番号か携帯電話番号かも正しく取得できるのですが、
2個目の電話番号のチェック時にLeft関数で取得する文字数を3文字と指定しても
実際に取得される文字数が2文字だけとなってしまうのです。
何が起きているのかわからず、とりあえずチェックでは3文字の文字列が必要なので
仮にLeft関数で引数を4文字とすると見た目上は3文字取得できているのですが、
「090」と取得できていても携帯電話番号とは判別せず、固定電話と判別されてしまいます。
Left関数ではなく、Mid関数を使用してもやはり同様の状況です。
宜しくお願い致します。
VB.NET
1Dim strCheckPhone AS String = "0120-11-2222090-9999-4444" 2Dim strCharCheck AS String 3Dim strPhone1 AS String 4Dim strPhone2 AS String 5 6’1個目電話番号を取得する 7strCharCheck = Microsoft.VisualBasic.Left(strCheckPhone, 3) ’正しく3文字取得できている 8’携帯電話番号かのチェック 一致する場合は携帯番号 9If strCharCheck = "090" Or strCharCheck = "080" Or strCharCheck = "070" Or strCharCheck = "050" Then 10 strPhone1 = Microsoft.VisualBasic.Mid(strCheckPhone, 1, 13) 11 strCheckPhone = Microsoft.VisualBasic.Replace(strCheckPhone, strPhone1 , "") 12’固定電話番号 13Else 14 strPhone1 = Strings.Mid(strCheckPhone, 1, 12) 15 strCheckPhone = Microsoft.VisualBasic.Replace(strCheckPhone, strPhone1 , "") 16End If 17 18’2個目電話番号を取得する 19strCharCheck = Microsoft.VisualBasic.Left(strCheckPhone, 3) ’2文字しか取得できない 20If strCharCheck = "090" Or strCharCheck = "080" Or strCharCheck = "070" Or strCharCheck = "050" Then 21 strPhone2 = Microsoft.VisualBasic.Mid(strCheckPhone, 1, 13) 22 strCheckPhone = Microsoft.VisualBasic.Replace(strCheckPhone, strPhone2 , "") 23Else 24 strPhone2 = Strings.Mid(strCheckPhone, 1, 12) 25 strCheckPhone = Microsoft.VisualBasic.Replace(strCheckPhone, strPhone2 , "") 26End If 27

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/23 06:32