如何处理电话号码的区号与号码,把区号与号码分开
如外部传来的号码有
01012345678
02112345678
2112345678
02812345678
045112345667
...
如上面号码,12345678表示电话号码,前面的为区号,有北京上海、成都、黑龙江等,现在如何把010、021、21、028、0451区号提取出来
[解决办法]
这样处理:
现在国内的号码只有8位和七位的。
你把8位的城市列出来
这样你可以分情况处理
if 8位 then
号码=right(str,8)
else
号码=right(str,7)
end if
区号=str-号码
[解决办法]
好像比较麻烦,把全国所有得区号列出来存表里面,然后截取来电号码得前3位或4位进行查找匹配。然后剩下得就是电话号码。因为电话号码存在升位得可能性,所以我觉得截取前面3或4位比从后面截取要好点。
[解决办法]
建议你找一下规律,好像01和02开头的都是3位的,03-07开头的都是4位的。
这样只有08、09开头的比较复杂,有4位和5位,这个就要再找规律了(比如094开头的,除了0943以外其它好像都是5位的)
[解决办法]
支持njstalk(春意浓浓) 的办法
虽然现在中国再细分行政区的可能性很小,但是还是要考虑。如果保存全部的区号,再搜索区号以便区分比较灵活,就算并区、分区,不过就是加减几个号码而已。若是按 TechnoFantasy((VB MVP)www.applevb.com) 的,以后区号若有变化就很麻烦。例如某个区号增加了一位或者偏偏出了个01开头的四位。
[解决办法]
支持
[解决办法]
综合判断吧。
还是有规律可寻的
1, 号码第一位没有1 和 0的情况。 所以截取的时候可以考虑从最后截取5位以上没有0和1的
2. 建立一个全国区号表,进行低位到高位的匹配,也就是线匹配2位的再匹配3位的再匹配4位的
[解决办法]
Function quhao(ByVal phone As String) As String
quhao = Left(phone, 3 + IIf(phone Like "0[1-2]* ", 0, 1))
End Function
台湾的比较麻烦
[解决办法]
那就查表吧。