A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 管冉 于 2012-12-24 20:33 编辑

判断字符串是否为正确的国内电话号码,不考虑分机。比如“010-95555”、“01095555”、“95555”都是正确的号码。区号为3位或者4位。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 王继光 于 2012-12-24 18:50 编辑

A 。 判断是否包含 - 号
包含则按一下方法判断
1.先按字符串  用 split 方法按 -分割
2.判断 前一部分 的长度 以及是否全是数字
3.判断后一部分的长度 以及是否全是数字

B  不包含 - 号  
判断位数 以及 是否全是数字
按需求 看什么样的符合电话号码的规律

最好的话 是按 数据库里电话号码的 统一特征来考虑  这里我只是针对你说的3个号码 抛砖引玉   

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
方法是使用正则表达式
  1. using System;
  2. using System.Text.RegularExpressions;
  3. class Program
  4. {
  5.     static void Main(string[] args)
  6.     {
  7.         string regexTest = @"0\d{2,3}-\d{8}";       //构造正则表达式
  8.         string testPhone = "0531-88886666";        //输入测试号码
  9.         Console.WriteLine("是否为国内电话:" + Regex.IsMatch(testPhone, regexTest));
  10.     }
  11. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
同样是正则表达式,传入电话号码字符串strphone,返回True或者False;
满足True条件:区号为3位时电话号码为5位或8位,区号为4位时电话号码为5位或7位,允许区号后有'-'号
  1. public static bool IsPhone(string strphone)
  2.         {
  3.             return Regex.IsMatch(strphone, "^0\\d{2}[- ]?\\d{8}$|^0\\d{2}[- ]?\\d{5}$|^0\\d{3}[- ]?\\d{7}$|^0\\d{3}[- ]?\\d{5}$");
  4.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
嗯, 确实,正则表达式 更简洁。。  多谢楼上2位提醒。
回复 使用道具 举报
之前都没接触到过正则表达式,刚刚去百度了解了下,功能很强大
http://www.jb51.net/tools/zhengze.html这个网页讲的很通俗啊
回复 使用道具 举报
谢了,这题确实我也不会!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马