扩展NameValueCollection

本文介绍了一个扩展NameValueCollection的方法集合,包括数值验证、类型转换等功能,提高了.NET应用中数据处理的便捷性和安全性。
/*
 * 扩展NameValueCollection
 * 调用方法:Request.QueryString.IsNumeric("ID")
*/

using System;
using System.Collections.Specialized;
using System.Text.RegularExpressions;

namespace App
{
    /// <summary>
    /// 扩展 System.Collections.Specialized.NameValueCollection
    /// </summary>
    public static class NameValueCollectionExtensions
    {
        /// <summary>
        /// 使用正表达式来验证指定值
        /// </summary>
        public static bool IsMatch(this NameValueCollection nv, string key, string pattern)
        {
            return Regex.IsMatch(nv[key] ?? "", pattern, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
        }

        /// <summary>
        /// 检查指定值是否为数字
        /// </summary>
        public static bool IsNumeric(this NameValueCollection nv, string key)
        {
            return Regex.IsMatch(nv[key] ?? "", @"^\d{1,}$");
        }

        /// <summary>
        /// 以string类型返回指定值,如值非纯数字则返回空字符串
        /// </summary>
        public static string ToNumeric(this NameValueCollection nv, string key)
        {
            return nv.IsNumeric(key) ? nv[key].Trim() : "";
        }

        /// <summary>
        /// 以int类型返回指定值
        /// </summary>
        public static int ToInt(this NameValueCollection nv, string key)
        {
            int val = 0;
            int.TryParse(nv[key], out val);
            return val;
        }

        /// <summary>
        /// 以long类型返回指定值
        /// </summary>
        public static long ToLong(this NameValueCollection nv, string key)
        {
            long val = 0;
            long.TryParse(nv[key], out val);
            return val;
        }

        /// <summary>
        /// 以short类型返回指定值
        /// </summary>
        public static short ToShort(this NameValueCollection nv, string key)
        {
            short val = 0;
            short.TryParse(nv[key], out val);
            return val;
        }

        /// <summary>
        /// 以byte类型返回指定值
        /// </summary>
        public static byte ToByte(this NameValueCollection nv, string key)
        {
            byte val = 0;
            byte.TryParse(nv[key], out val);
            return val;
        }

        /// <summary>
        /// 返回安全的SQL字符串
        /// </summary>
        public static string ToVarchar(this NameValueCollection nv, string key)
        {
            //string val = nv[key] ?? "";
            //val = val.Replace("'", "''");
            return (nv[key] ?? "").Replace("'", "''");
        }

        /// <summary>
        /// 以bool类型返回指定值
        /// </summary>
        public static bool ToBoolean(this NameValueCollection nv, string key)
        {
            bool val = false;
            bool.TryParse(nv[key], out val);
            return val;
        }

        /// <summary>
        /// 检查指定值是否为DateTime类型
        /// </summary>
        public static bool IsDateTime(this NameValueCollection nv, string key)
        {
            DateTime date;
            return (DateTime.TryParse(nv[key], out date));
        }

        /// <summary>
        /// 以DateTime返回指定值,如指定值为非法日期则返回当前时间
        /// </summary>
        public static DateTime ToDateTimeOrNow(this NameValueCollection nv, string key)
        {
            DateTime date = DateTime.Now;
            DateTime.TryParse(nv[key], out date);
            return date;
        }

        /// <summary>
        /// 以DateTime返回指定值,如指定值为非法日期则返回null
        /// </summary>
        public static DateTime? ToDateTimeOrNull(this NameValueCollection nv, string key)
        {
            DateTime date;
            if (DateTime.TryParse(nv[key], out date))
                return date;
            else
                return null;
        }

    }
}

 

还是这个界面比较清爽,呵呵……

转载于:https://www.cnblogs.com/apphost/archive/2009/09/19/1569864.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值