如何从以下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 客户端提供的格式。如果是这种情况,您应该尝试对格式实施一些限制——让客户端将国家代码作为单独的参数传递,或者使用合适的分隔符。如果是这样,您最终将解析代码并确定国家/地区。由客户决定是否符合所需的格式。