设计一个对象类Student,该类具有下列服务:
1. 检测给定的字符串是否为数字
2. 检测给定的字符串是否含有字母,数字和下划线
3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
4. 检测给定的字符串是否为有效的身份证号码格式
5. 返回一个随机的6位字符串(该字符串只含有数字和字母)
注意:对象类方法的内部实现要使用高效的StringBuilder或StringBuffer实现,不要直接使用String对象进行操作。
1. 检测给定的字符串是否为数字
2. 检测给定的字符串是否含有字母,数字和下划线
3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
4. 检测给定的字符串是否为有效的身份证号码格式
5. 返回一个随机的6位字符串(该字符串只含有数字和字母)
注意:对象类方法的内部实现要使用高效的StringBuilder或StringBuffer实现,不要直接使用String对象进行操作。
2. 检测给定的字符串是否含有字母,数字和下划线
3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
4. 检测给定的字符串是否为有效的身份证号码格式
用正则表达式判断
5 只产生6个字符,为什么要用StringBuilder,高效个P。
2. 检测给定的字符串是否含有字母,数字和下划线
3. 检测给定的字符串是否为有效的日期格式(日期格式:2008-12-15)
4. 检测给定的字符串是否为有效的身份证号码格式
用正则表达式判断
5 只产生6个字符,为什么要用StringBuilder,高效个P。极力同意。
给定正则表达式和字符串,判断字符串是否符合这个正则表达式
如果符合,返回0,否则返回非0
*/
#include<regex.h>
int check_input(const char *pattern,const char *input)
{
regex_t reg;
/*生成正则表达式*/
if(regcomp(&reg,pattern,REG_NOSUB | REG_EXTENDED))
return -1;
/*检测字符串是否符合*/
if(!regexec(&reg,input,0,0,0)){
regfree(&reg);
return 0;
}
else{
regfree(&reg);
return -2;
}
}
以上函数仅仅判断传递的input字符串是否符合传递过去的pattern正则表达式,而不进行分割.
例如调用
check_input(“[a-z]+”,”xyz”)
匹配,返回0.
http://www.cnblogs.com/wanderer/articles/1446382.html
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();
}
}
赞成,高效还真的要正则表达式,不过习惯之后,碰到这类验证问题条件反射就使用了正则表达式。
返回6位随机数字,根本不需要什么stringbuilder。