黑马程序员技术交流社区

标题: 像这种判断字符串格式的题目,在C#中用什么方法和语句 [打印本页]

作者: 管冉    时间: 2012-12-24 18:38
标题: 像这种判断字符串格式的题目,在C#中用什么方法和语句
本帖最后由 管冉 于 2012-12-24 20:33 编辑

判断字符串是否为正确的国内电话号码,不考虑分机。比如“010-95555”、“01095555”、“95555”都是正确的号码。区号为3位或者4位。
作者: 王继光    时间: 2012-12-24 18:46
本帖最后由 王继光 于 2012-12-24 18:50 编辑

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

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

最好的话 是按 数据库里电话号码的 统一特征来考虑  这里我只是针对你说的3个号码 抛砖引玉   
作者: 许晓华    时间: 2012-12-24 19:19
方法是使用正则表达式
  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. }
复制代码

作者: 张鹏飞    时间: 2012-12-24 19:45
同样是正则表达式,传入电话号码字符串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.         }
复制代码

作者: 王继光    时间: 2012-12-24 19:48
嗯, 确实,正则表达式 更简洁。。  多谢楼上2位提醒。
作者: 管冉    时间: 2012-12-24 20:59
之前都没接触到过正则表达式,刚刚去百度了解了下,功能很强大
http://www.jb51.net/tools/zhengze.html这个网页讲的很通俗啊
作者: 甘斌斌    时间: 2013-6-11 11:39
谢了,这题确实我也不会!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2