常用的扩展方法.

注:以下方法皆为收集而来

/// <summary>
    /// 自定义扩展类
    /// </summary>
    public static class IExtension
    {
        /// <summary>
        /// 是否为空
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static bool IsNullOrEmpty(this string s)
        {
            return string.IsNullOrEmpty(s);
        }

        /// <summary>
        /// 验证字符串是否由正负号(+-)、数字、小数点构成,并且最多只有一个小数点
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool IsNumeric(this string str)
        {
            Regex regex = new Regex(@"^[+-]?\d+[.]?\d*$");
            return regex.IsMatch(str);
        }

        /// <summary>
        /// 验证字符串是否仅由[0-9]构成
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool IsNumericOnly(this string str)
        {
            Regex regex = new Regex("[0-9]");
            return regex.IsMatch(str);
        }

        /// <summary>
        /// 验证字符串是否由字母和数字构成
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool IsNumericOrLetters(this string str)
        {
            Regex regex = new Regex("[a-zA-Z0-9]");
            return regex.IsMatch(str);
        }

        /// <summary>
        /// 验证字符串是否符合正则
        /// </summary>
        /// <param name="s">字符串</param>
        /// <param name="pattern">正则</param>
        /// <returns>bool</returns>
        public static bool IsMatch(this string s, string pattern)
        {
            if (s == null) return false;
            else return Regex.IsMatch(s, pattern);
        }

        /// <summary>
        /// 验证字符串是否符合正则
        /// </summary>
        /// <param name="s">字符串</param>
        /// <param name="pattern">正则</param>
        /// <returns>string</returns>
        public static string Match(this string s, string pattern)
        {
            if (s == null) return "";
            return Regex.Match(s, pattern).Value;
            //--------------example--------------
            //bool b = "12345".IsMatch(@"\d+");
            //string s = "ldp615".Match("[a-zA-Z]+");
        }

        /// <summary>
        /// 获取字符串长度。与string.Length不同的是,该方法将中文作 2 个字符计算。
        /// </summary>
        /// <param name="str">目标字符串</param>
        /// <returns></returns>
        public static int GetLength(this string str)
        {
            if (str == null || str.Length == 0) { return 0; }
            int l = str.Length;
            int realLen = l;

            #region 计算长度
            int clen = 0;//当前长度
            while (clen < l)
            {
                //每遇到一个中文,则将实际长度加一。
                if ((int)str[clen] > 128) { realLen++; }
                clen++;
            }
            #endregion
            return realLen;
        }

        /// <summary>
        /// 将形如 10.1MB 格式对用户友好的文件大小字符串还原成真实的文件大小,单位为字节。
        /// </summary>
        /// <param name="formatedSize">形如 10.1MB 格式的文件大小字符串</param>
        /// <remarks>
        /// 参见:<see cref="uoLib.Common.Functions.FormatFileSize(long)"/>
        /// </remarks>
        /// <returns></returns>
        public static long GetFileSizeFromString(this string formatedSize)
        {
            if (IsNullOrEmptyStr(formatedSize)) throw new ArgumentNullException("formatedSize");
            long size;
            if (long.TryParse(formatedSize, out size)) return size;
            //去掉数字分隔符
            formatedSize = formatedSize.Replace(",", "");
            Regex re = new Regex(@"^([\d\.]+)((?:TB|GB|MB|KB|Bytes))$");
            if (re.IsMatch(formatedSize))
            {
                MatchCollection mc = re.Matches(formatedSize);
                Match m = mc[0];
                double s = double.Parse(m.Groups[1].Value);
                switch (m.Groups[2].Value)
                {
                    case "TB":
                        s *= 1099511627776;
                        break;
                    case "GB":
                        s *= 1073741824;
                        break;
                    case "MB":
                        s *= 1048576;
                        break;
                    case "KB":
                        s *= 1024;
                        break;
                }
                size = (long)s;
                return size;
            }
            throw new ArgumentException("formatedSize");
        }

        /// <summary>
        /// 根据文件夹命名规则验证字符串是否符合文件夹格式
        /// </summary>
        //public static bool IsFolderName(this string folderName)
        //{
        //    if (IsNullOrEmptyStr(folderName)) { return false; }
        //    else
        //    {
        //        // 不能以 “.” 开头
        //        folderName = folderName.Trim().ToLower();
        //        // “nul”、“aux”、“con”、“com1”、“lpt1”不能为文件夹/文件的名称
        //        // 作为文件夹,只需满足名称不为这几个就行。
        //        switch (folderName)
        //        {
        //            case "nul":
        //            case "aux":
        //            case "con":
        //            case "com1":
        //            case "lpt1":
        //                return false;
        //            default:
        //                break;

        //        }
        //        Regex re = new Regex(RegexPatterns.FolderName, RegexOptions.IgnoreCase);
        //        return re.IsMatch(folderName);
        //    }
        //}

        /// <summary>
        /// 验证是否是整形
        /// </summary>
        /// <param name="s"></param>
        /// <returns>bool</returns>
        public static bool IsInt(this string s)
        {
            int i;
            return int.TryParse(s, out i);
        }

        /// <summary>
        /// 验证是否是整形
        /// </summary>
        /// <param name="s"></param>
        /// <returns>int</returns>
        public static int ToInt(this string s)
        {
            return int.Parse(s);
        }

        /// <summary>
        /// 转换时间及小数
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ToExtensionString(this Object obj)
        {
            string s = string.Empty;
            if (obj == null) return s;
            if (obj is DateTime)
                s = Convert.ToDateTime(obj).ToString("yyyy-MM-dd");
            else if (obj is Decimal)
                s = Convert.ToDecimal(obj).ToString("###,##0.00");
            else
                s = obj.ToString();
            return s;
        }

        /// <summary>
        /// 第一位小写
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static string ToCamel(this string s)
        {
            if (s.IsNullOrEmpty()) return s;
            return s[0].ToString().ToLower() + s.Substring(1);
        }

        /// <summary>
        /// 第一位大写
        /// </summary>
        /// <param name="s"></param>
        /// <returns></returns>
        public static string ToPascal(this string s)
        {
            if (s.IsNullOrEmpty()) return s;
            return s[0].ToString().ToUpper() + s.Substring(1);
        }

        /// <summary>
        /// 转全角(SBC case)
        /// </summary>
        /// <param name="input">任意字符串</param>
        /// <returns>全角字符串</returns>
        public static string ToSBC(this string input)
        {
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 32)
                {
                    c[i] = (char)12288;
                    continue;
                }
                if (c[i] < 127)
                    c[i] = (char)(c[i] + 65248);
            }
            return new string(c);
        }

        /// <summary>
        /// 转半角(DBC case)
        /// </summary>
        /// <param name="input">任意字符串</param>
        /// <returns>半角字符串</returns>
        public static string ToDBC(this string input)
        {
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 12288)
                {
                    c[i] = (char)32;
                    continue;
                }
                if (c[i] > 65280 && c[i] < 65375)
                    c[i] = (char)(c[i] - 65248);
            }
            return new string(c);
        }

        /// <summary>
        /// 把提取的字母变成大写
        /// </summary>
        /// <param name="strText">需要转换的字符串</param>
        /// <returns>转换结果</returns>
        public static string GetLowerChineseSpell(this  string strText)
        {
            return ChsToPinYinPlugs.GetChineseSpell(strText).ToLower();
        }
        /// <summary>
        /// 把提取的字母变成大写
        /// </summary>
        /// <param name="myChar">需要转换的字符串</param>
        /// <returns>转换结果</returns>
        public static string GetUpperChineseSpell(this string strText)
        {
            return ChsToPinYinPlugs.GetChineseSpell(strText).ToUpper();
        }
    }

  

时间: 2024-12-23 18:10:22

常用的扩展方法.的相关文章

Farseer.net轻量级开源框架 中级篇:常用的扩展方法

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 中级篇: BasePage.BaseController.BaseHandler.BaseMasterPage.BaseControls基类使用 下一篇:Farseer.net轻量级开源框架 中级篇: 常用工具 在使用框架的时候,都需要引用扩展方法的命名空间:using FS.Extend; 1 /// <summary> 2 /// 将值转换成类型对像的值(此方法作为公共的调用,只支持

C# LiNq的语法以及常用的扩展方法

首先先来扯一下,这篇博文是我第一次写的,主要是我的一些摘录,希望对大家有所帮助. Linq的基础 •LINQ(读音link):Linq To SQL(过时).Linq To Object.Linq To XML.Linq To entity,目的:以统一的方式对数据进行操作.看起来非常像SQL语句,但是和SQL无关. •var关键字,var类型用来简化类型的声明,var i = 2,并不说明i是无类型的,编译器会自动根据右边的值推断(这叫类型推断)var代表的值.var只能用来语句中,不能用在返

【EF学习笔记11】----------查询中常用的扩展方法

先来看一下我们的表结构: 首先毫无疑问的要创建我们的上下文对象: using (var db = new Entities()) { //执行操作 } Average 平均值: //查询平均分 Console.WriteLine("平均分:"+db.Student.Average(v=>v.Score)); Max 最大值: //查询最高分 Console.WriteLine("最高分:"+db.Student.Max(v=>v.Score)); Min

.NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以,跟着本篇的步伐,继续来围观. /* 新语法索引 */ 1.自动属性 Auto-Implemented Properties 2.隐式类型 var 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } 5.匿名类 & 匿名方法 6.扩展方法 7.系统内置委托 Func / Acti

LINQ常用扩展方法

下面的方法都是IEnumerable<T>的扩展方法: Average计算平均值: Min最小元素:Max最大元素:Sum元素总和: Count元素数量: Concat连接两个序列://Unoin all Contains序列是否包含指定元素: Distinct取得序列中的非重复元素: Except获得两个序列的差集: Intersect获得两个序列的交集: First取得序列第一个元素: Single取得序列的唯一一个元素,如果元素个数不是1个,则报错:!!!严谨的程序. FirstOrDe

Javascript 常用扩展方法

这篇文章纯粹是为了保存这些方法,供以后翻阅,其实一直保存在 evernote 里面,但觉得还是放到对的地方会好点. 现在收录的很少,希望以后会慢慢增多. 数组扩展 contains,remove 扩展 1 function ArrayContains(array, obj) { 2 for (var i = 0; i < array.length; i++) { 3 if (array[i] === obj) { 4 return true ; 5 } 6 } 7 return false ;

WebAPi添加常用扩展方法及思维发散

WebAPi常用扩展方法 (1)获取所有键值对         /// <summary>         /// 获取所有键值        /// </summary>         /// <param name="request"></param>         /// <returns></returns>         public static Dictionary<string, str

项目中常用的C# 扩展方法

///我们经常使用一些匿名委托来处理一些逻辑///但是在某些情况下,有可能委托是null,要是直接执行可能会抛异常///所以提供此扩展方法,直接可以使用例如 action.Execute() 来执行 namespace System { public static class ActionExtension { public static void Execute(this Action action) { if (action != null) { action(); } } public s

c# 扩展方法奇思妙用基础篇五:Dictionary&lt;TKey, TValue&gt; 扩展

Dictionary<TKey, TValue>类是常用的一个基础类,但用起来有时确不是很方便.本文逐一讨论,并使用扩展方法解决. 向字典中添加键和值 添加键和值使用 Add 方法,但很多时候,我们是不敢轻易添加的,因为 Dictionary<TKey, TValue>不允许重复,尝试添加重复的键时 Add 方法引发 ArgumentException. 大多时候,我们都会写成以下的样子: var dict = new Dictionary<int, string>()