如何实现把中国电话号码格式转换成国际电话号码格式?

PSDCD 2009-04-07 09:59:20
如题
比如,把021-12345678转换成+86(21)12345678
因为区号有可能是4位数,比如0411,所以本人实在想不出办法,求助各位高手了。
...全文
27944 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
liliangbao 2009-04-08
  • 打赏
  • 举报
回复
关注中...
jiyan1221 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 PSDCD 的回复:]
引用 7 楼 Sco_field 的回复:
嗯,正准备说呢。号码之间不一定有字符“-”的。

引用 5 楼 brookmill 的回复:

如果区号和号码之间肯定有'-',楼上几位的办法都不错
如果没有,那就只好自己判断。
01x、02x的区号都是3位,比如021
其它都是4位,比如0411



正如7楼所说,号码之间没有“-”的该如何处理呢?比如02112345678
[/Quote]
那就先判断号码里有没有“-”,然后再做处理。
PSDCD 2009-04-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Sco_field 的回复:]
嗯,正准备说呢。号码之间不一定有字符“-”的。

引用 5 楼 brookmill 的回复:

如果区号和号码之间肯定有'-',楼上几位的办法都不错
如果没有,那就只好自己判断。
01x、02x的区号都是3位,比如021
其它都是4位,比如0411

[/Quote]

正如7楼所说,号码之间没有“-”的该如何处理呢?比如02112345678

zxh8212166 2009-04-08
  • 打赏
  • 举报
回复
对,要自己定义好规则。不然会很麻烦的。有人021-12345678,有人021 12345678…………
这样的程序就去解析号码就很困难。最好自己先定义好号码的规则。比如只能021-12345678,其他的输入方法都不对
kostion 2009-04-07
  • 打赏
  • 举报
回复
先定义好规则,在转换
  • 打赏
  • 举报
回复
楼主,你先制定好规则,把转换的规则设置好。
这种转换,代码根本不是问题,不难的,关键是你规则要设置好。
Sco_field 2009-04-07
  • 打赏
  • 举报
回复
嗯,正准备说呢。号码之间不一定有字符“-”的。

[Quote=引用 5 楼 brookmill 的回复:]
如果区号和号码之间肯定有'-',楼上几位的办法都不错
如果没有,那就只好自己判断。
01x、02x的区号都是3位,比如021
其它都是4位,比如0411
[/Quote]
brookmill 2009-04-07
  • 打赏
  • 举报
回复
01或02开头的区号都是3位,03以上开头的都是4位
brookmill 2009-04-07
  • 打赏
  • 举报
回复
如果区号和号码之间肯定有'-',楼上几位的办法都不错
如果没有,那就只好自己判断。
01x、02x的区号都是3位,比如021
其它都是4位,比如0411
snthenry 2009-04-07
  • 打赏
  • 举报
回复
楼上说的很对啊。主要看你自己输入电话号码的格式是怎么样的,如果你确定了格式再转换的话应该不难。
可以参考读取配置文件。
liliangbao 2009-04-07
  • 打赏
  • 举报
回复
是这样吗:
#include <iostream>
#include <stdlib.h>

using namespace std;


int main(int argc, char *argv[])
{

char buf[32] = {0};
char q[5] = {0};
char a[10] = {0};
char *p = NULL;

cout<<"输入电话: ";
cin>>buf;
p = strtok(buf,"-");
strcpy(q,p);
p = strtok(NULL,"-");
strcpy(a,p);
sprintf(buf, "+86 (%s) %s", q, a);

cout<<buf<<endl;
system("PAUSE");
return 0;
}
ltc_mouse 2009-04-07
  • 打赏
  • 举报
回复
int region;
long number;
scanf("0%d-%ld", ®ion, &number);
printf("+86(%d)%ld", region, number);

对字符串操作的话,就换成sscanf, sprintf
zxh8212166 2009-04-07
  • 打赏
  • 举报
回复
你可以再说仔细点吗?
按现在的理解:
1、首先区号和号码之间应该是有什么符号分开的吧(比如空格什么的)
如果是这样的话应该是没什么问题的,按你的例子之间的分割应该是—;
你可以去解析这段号码,但发现-时,前面的是区号,后面的是号码

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧