以下几个函数主要是利用正则表达式格式化用户输入的不当数据
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;
}
}
{
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;
}
}