次のMSISDNから国コードを検出するにはどうすればよいですか?
キプロス (+357XXXXXXXX) -- 11 桁
フィンランド (+358XXXXXXXXXX) -- 13 桁
セルビア (+381XXXXXXX) -- 10 桁
国が異なれば、国コードと MSISDN の桁数も異なるため、番号全体から国コードのみを照合する方法はありません。
では、特定の MSISDN から国コードを取得するにはどうすればよいでしょうか?
次のMSISDNから国コードを検出するにはどうすればよいですか?
キプロス (+357XXXXXXXX) -- 11 桁
フィンランド (+358XXXXXXXXXX) -- 13 桁
セルビア (+381XXXXXXX) -- 10 桁
国が異なれば、国コードと MSISDN の桁数も異なるため、番号全体から国コードのみを照合する方法はありません。
では、特定の MSISDN から国コードを取得するにはどうすればよいでしょうか?
データが固定形式:{country_code} {space} {phone_digits}
で存在する場合、文字列操作 (正規表現、分割など) を使用して国コード部分を簡単に取得できます。コードが表す国を特定するには、既知の国コードのリストと照合する必要があります。これらをデータベースに保存するか、検証に Web サービスを使用します。
可能なアプローチは、データベースから国コードを取得し、一致する場所を手動で比較することです-形式が一貫していない場合. 国コードの長さも異なる場合があり、間違ったものと一致する可能性があるため、これはエラーが発生しやすい可能性があります。他に選択肢がない場合、ある程度受け入れられるアプローチは、最初に最も長いコードを照合し、次に短いコードを照合することですが、無効な一致の保証はありません。この問題を完全に回避するには、次の提案を検討してください。
電話番号の永続化方法 (データベースまたは使用するストレージ) を制御できる場合は、国コードを別のフィールドに保存することをお勧めします。SQL データベースの場合、これは国コード用の列と電話番号用の列があることを意味します。その後、絶対確実に国コードを簡単に抽出し、好きな方法で処理できます。
コメントからわかるように、問題の形式は、API クライアントが提供することを期待するものです。その場合は、形式にいくつかの制約を適用するようにしてください。クライアントに国コードを別のパラメーターとして渡すようにするか、適切な区切り記号を使用してください。その場合、コードを解析して国を特定することになります。希望のフォーマットに準拠するかどうかは、クライアント次第です。