设计一个对象类Student,该类具有下列服务:
1. 检测给定的字符串是否为数字
2. 检测给定的字符串是否含有字母,数字和下划线
3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
4. 检测给定的字符串是否为有效的身份证号码格式
5. 返回一个随机的6位字符串(该字符串只含有数字和字母)
注意:对象类方法的内部实现要使用高效的StringBuilder或StringBuffer实现,不要直接使用String对象进行操作。

解决方案 »

  1.   

    1. 检测给定的字符串是否为数字
    2. 检测给定的字符串是否含有字母,数字和下划线
    3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
    4. 检测给定的字符串是否为有效的身份证号码格式
    用正则表达式判断
    5 只产生6个字符,为什么要用StringBuilder,高效个P。
      

  2.   

    1. 检测给定的字符串是否为数字
    2. 检测给定的字符串是否含有字母,数字和下划线
    3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
    4. 检测给定的字符串是否为有效的身份证号码格式
    用正则表达式判断
    5 只产生6个字符,为什么要用StringBuilder,高效个P。极力同意。
      

  3.   

    大侠说的是,不过这个题目的本意是要让楼主熟悉一下StringBuilder的用法吧
      

  4.   

    只产生6个字符,为什么要用StringBuilder,高效个P
      

  5.   

    /*
      给定正则表达式和字符串,判断字符串是否符合这个正则表达式
      如果符合,返回0,否则返回非0
    */
     
    #include<regex.h>
     
    int check_input(const char *pattern,const char *input)
    {
        regex_t reg;
     
        /*生成正则表达式*/
        if(regcomp(&amp;reg,pattern,REG_NOSUB | REG_EXTENDED))
            return -1;
     
        /*检测字符串是否符合*/
        if(!regexec(&amp;reg,input,0,0,0)){
            regfree(&amp;reg);
            return 0;
        }
        else{
            regfree(&amp;reg);
            return -2;
        }
    }
    以上函数仅仅判断传递的input字符串是否符合传递过去的pattern正则表达式,而不进行分割.
    例如调用
    check_input(“[a-z]+”,”xyz”)
    匹配,返回0.
      

  6.   

    其实懒人可以用 .net的验证控件
    http://www.cnblogs.com/wanderer/articles/1446382.html
      

  7.   

    一路写下来的。。没测试过不过我还是希望你自己动手完全给代码不好
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text.RegularExpressions;
    using System.Text; 
    public class Student
    {
        /// <summary>
        /// 检测给定的字符串是否为数字
        /// </summary>
        /// <param name="strInput">要验证的值</param>
        /// <returns>bool</returns>
        public static bool IsNumber(string strInput)
        {
            if (strInput == null)
            {
                return false;
            }
            return Regex.IsMatch(strInput, @"^\d+$", RegexOptions.Singleline);    }
        /// <summary>
        /// 检测给定的字符串是否含有字母,数字和下划线
        /// </summary>
        /// <param name="strInput">要验证的值</param>
        /// <returns>bool</returns>
        public static bool IsValue(string strInput)
        {
            if (strInput == null)
            {
                return false;
            }
            return Regex.IsMatch(strInput, @"^[0-9a-zA-Z_]+$", RegexOptions.Singleline);    }
        /// <summary>
        /// 检测给定的字符串是否含有字母,数字
        /// </summary>
        /// <param name="strInput">要验证的值</param>
        /// <returns>bool</returns>
        public static bool IsNumString(string strInput)
        {
            if (strInput == null)
            {
                return false;
            }
            return Regex.IsMatch(strInput, @"^[0-9a-zA-Z]+$", RegexOptions.Singleline);    }    /// <summary>
        /// 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
        /// </summary>
        /// <param name="strInput">要验证的值</param>
        /// <returns>bool</returns>
        public static bool IsDate(string strInput)
        {
            if (strInput == null)
            {
                return false;
            }
            return Regex.IsMatch(strInput, @"b(?<year>d{2,4})-(?<month>d{1,2})-(?<day>d{1,2})b", RegexOptions.Singleline);
        }    /// <summary>
        /// 检测给定的字符串是否为有效的身份证号码格式
        /// </summary>
        /// <param name="strInput">要验证的值</param>
        /// <returns>bool</returns>
        public static bool IsSFZ(string strInput)
        {
            if (strInput == null)
            {
                return false;
            }
            return Regex.IsMatch(strInput, @"^( d{15}$|^ d{18}$|^ d{17}( d|X|x))$", RegexOptions.Singleline);
        }
        /// <summary>
        /// 返回一个随机的6位字符串(该字符串只含有数字和字母)
        /// </summary>
        /// <param name="strInput">要验证的值</param>
        /// <returns>string</returns>
        public static string ReturnValue(string strInput)
        {
            if (strInput == null)
            {
                return "";
            }
            StringBuilder strValue = new StringBuilder();
            char[] c = strInput.ToCharArray();
            int i= 0;
            while(i<6)
            {
                Random rand = new Random();
                int index = rand.Next(0, c.Length);
                if (IsNumString(c[index].ToString()))
                {
                    strValue.Append(c[index].ToString());
                    i++;
                }
            }        return strValue.ToString();
        }
    }
      

  8.   


    赞成,高效还真的要正则表达式,不过习惯之后,碰到这类验证问题条件反射就使用了正则表达式。
    返回6位随机数字,根本不需要什么stringbuilder。