您的位置:首页 > 编程语言 > C#

C#中几个正则表达式匹配输入字符的函数

2008-09-24 10:57 232 查看
以下几个函数主要是利用正则表达式格式化用户输入的不当数据

public static int ParseInt32(string value)

{

if (string.IsNullOrEmpty(value.Trim()))

return 0;

else

{

return int.Parse(value);

}

}

public static float ParseFloat(string value)

{

if (string.IsNullOrEmpty(value.Trim()))

return 0f;

else

{

return float.Parse(value);

}

}

/// <summary>

/// 功能:将字符转换为单精度型,正则表达式匹配速度比较慢,慎用。

/// 建议在外部输入的数据(可能是不安全的数据)时使用

/// 作者:胡进平

/// 日期:2008-9-12

/// </summary>

/// <param name="value">要转换的字符</param>

/// <param name="isStrict">是否需要严格判断</param>

/// <returns></returns>

public static float ParseFloat(string value,bool isStrict)

{

if (!isStrict) return ParseFloat(value);

if (string.IsNullOrEmpty(value.Trim()))

return 0f;

else

{

Regex rx = new Regex(@"(-?\d+\.\d*)|(-?\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

return Convert.ToSingle(matches[0].Value);

}

return 0f;

}

}

/// <summary>

/// 功能:将字符转换为整型,正则表达式匹配速度比较慢,慎用

/// 建议在外部输入的数据(可能是不安全的数据)时使用

/// 作者:胡进平

/// 日期:2008-9-12

/// </summary>

/// <param name="value">要转换的字符</param>

/// <param name="isStrict">是否需要严格判断</param>

/// <returns></returns>

public static int ParseInt32(string value,bool isStrict)

{

if (!isStrict) return ParseInt32(value);

if (string.IsNullOrEmpty(value.Trim()))

return 0;

else

{

Regex rx = new Regex(@"-?\d+\.\d*", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

string prefix = matches[0].Value.Split('.')[0];

return Convert.ToInt32(prefix);

}

rx = new Regex(@"-?\d+", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

return Convert.ToInt32(matches[0].Value);

}

return 0;

}

}

/// <summary>

/// 功能:将字符转换为双精度型

/// 作者:胡进平

/// 日期:2008-9-12

/// </summary>

/// <param name="value"></param>

/// <returns></returns>

public static double ParseDobule(string value)

{

if (string.IsNullOrEmpty(value.Trim()))

return 0;

else

{

Regex rx = new Regex(@"(-?\d+\.\d*)|(-?\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

return Convert.ToDouble(matches[0].Value);

}

return 0;

}

}public static int ParseInt32(string value)

{

if (string.IsNullOrEmpty(value.Trim()))

return 0;

else

{

return int.Parse(value);

}

}

public static float ParseFloat(string value)

{

if (string.IsNullOrEmpty(value.Trim()))

return 0f;

else

{

return float.Parse(value);

}

}

/// <summary>

/// 功能:将字符转换为单精度型,正则表达式匹配速度比较慢,慎用。

/// 建议在外部输入的数据(可能是不安全的数据)时使用

/// 作者:胡进平

/// 日期:2008-9-12

/// </summary>

/// <param name="value">要转换的字符</param>

/// <param name="isStrict">是否需要严格判断</param>

/// <returns></returns>

public static float ParseFloat(string value,bool isStrict)

{

if (!isStrict) return ParseFloat(value);

if (string.IsNullOrEmpty(value.Trim()))

return 0f;

else

{

Regex rx = new Regex(@"(-?\d+\.\d*)|(-?\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

return Convert.ToSingle(matches[0].Value);

}

return 0f;

}

}

/// <summary>

/// 功能:将字符转换为整型,正则表达式匹配速度比较慢,慎用

/// 建议在外部输入的数据(可能是不安全的数据)时使用

/// 作者:胡进平

/// 日期:2008-9-12

/// </summary>

/// <param name="value">要转换的字符</param>

/// <param name="isStrict">是否需要严格判断</param>

/// <returns></returns>

public static int ParseInt32(string value,bool isStrict)

{

if (!isStrict) return ParseInt32(value);

if (string.IsNullOrEmpty(value.Trim()))

return 0;

else

{

Regex rx = new Regex(@"-?\d+\.\d*", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

string prefix = matches[0].Value.Split('.')[0];

return Convert.ToInt32(prefix);

}

rx = new Regex(@"-?\d+", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

return Convert.ToInt32(matches[0].Value);

}

return 0;

}

}

/// <summary>

/// 功能:将字符转换为双精度型

/// 作者:胡进平

/// 日期:2008-9-12

/// </summary>

/// <param name="value"></param>

/// <returns></returns>

public static double ParseDobule(string value)

{

if (string.IsNullOrEmpty(value.Trim()))

return 0;

else

{

Regex rx = new Regex(@"(-?\d+\.\d*)|(-?\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase);

if (rx.IsMatch(value))

{

MatchCollection matches = rx.Matches(value);

return Convert.ToDouble(matches[0].Value);

}

return 0;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐