如何从以下MSISDN检测国家代码
塞浦路斯(+357XXXXXXXX) -- 11位数
芬兰(+358XXXXXXXXXX) -- 13位数
塞尔维亚(+381XXXXXXX) -- 10位数
不同的国家在其国家代码和MSISDN中都有不同的数字,因此,无法将国家代码单独与全部数字相匹配。
那么,如何从特定的MSISDN中获得国家代码呢?
发布于 2015-06-01 08:17:27
如果数据以固定格式显示:{country_code} {space} {phone_digits},则可以很容易地使用字符串操作(regex、拆分等)来获取国家代码部分。要确定代码代表哪个国家,您应该将其与已知的国家代码列表相匹配--要么将这些代码存储在数据库中,要么使用web服务进行验证。
一种可能的方法是从数据库中获取国家代码,并在发现匹配的地方手动进行比较--以防格式不一致。这可能容易出错,因为国家代码的长度也可能不同,而且您可能匹配错误的代码。如果没有其他选择,一种可以接受的方法是先匹配最长的代码,然后再匹配较短的代码--但是无效匹配没有保证。为了完全避免这个问题,考虑下一个建议:
如果您控制电话号码如何持久化(在数据库中或您使用的任何存储),我建议您将国家代码存储在单独的字段中。对于SQL数据库,这意味着您有一个列表示国家代码,另一个列用于电话号码。然后,您可以非常肯定地提取国家代码,并以任何您喜欢的方式处理它。
从评论中可以看出,所讨论的格式是您期望您的api客户端提供的。如果是这样的话,您应该尝试对格式强制执行一些约束--让客户端将国家代码作为单独的参数传递,或者使用适当的分隔符。如果是这样的话,您将最终解析代码并确定国家。这将取决于客户端是否符合所需的格式。
https://stackoverflow.com/questions/30568564
复制相似问题