C#代码规范化(代码风格化)的几个函数

近期由于适配Oracle的缘故,将旺财C#.NET代码生成器增加了风格化的几个函数,具体实现如下功能:

1、转换为Pascal风格,如User_Name/USER_NAME/UserName自动替换下划线分隔符后,生成为UserName

2、转换为Camel风格,就是将Pascal的第一个字母小写,如上例:userName

3、替换表前缀,也就是替换第一个匹配到的字符

4、判断给定字符串中的英文字母是否都为大写或小写

 

#region 代码风格化

        /// <summary>
        /// 转换为Pascal风格-每一个单词的首字母大写
        /// </summary>
        /// <param name="fieldName">字段名</param>
        /// <param name="fieldDelimiter">分隔符</param>
        /// <returns></returns>
        public static string ConvertToPascal(string fieldName, string fieldDelimiter)
        {
            string result = string.Empty;
            if (string.IsNullOrWhiteSpace(fieldName))
            {
                result = fieldName;
            }
            else
            {
                if (fieldName.Length == 1)
                {
                    result = fieldName.ToUpper();
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(fieldDelimiter))
                    {
                        result = fieldName.Substring(0, 1).ToUpper() + fieldName.Substring(1);
                    }
                    else
                    {
                        if (fieldName.Contains(fieldDelimiter))
                        {
                            //全部小写
                            string[] array = fieldName.ToLower().Split(fieldDelimiter.ToCharArray());
                            foreach (var t in array)
                            {
                                //万一多个分隔符连续,会有空值产生
                                if (!string.IsNullOrWhiteSpace(t))
                                {
                                    //首字母大写
                                    result += t.Substring(0, 1).ToUpper() + t.Substring(1);
                                }
                            }
                        }
                        else if (IsAllEnglishLetterUpperCase(fieldName))
                        {
                            //如果字段中的英文字符全部都是大写的,特别针对Oracle数据库的字段
                            result = fieldName.Substring(0, 1).ToUpper() + fieldName.Substring(1).ToLower();
                        }
                        else
                        {
                            result = fieldName.Substring(0, 1).ToUpper() + fieldName.Substring(1);
                        }
                    }
                }
            }

            return result;
        }

        /// <summary>
        /// 转换为Camel风格-第一个单词小写,其后每个单词首字母大写
        /// </summary>
        /// <param name="fieldName">字段名</param>
        /// <param name="fieldDelimiter">分隔符</param>
        /// <returns></returns>
        public static string ConvertToCamel(string fieldName, string fieldDelimiter)
        {
            //先Pascal
            string result = ConvertToPascal(fieldName, fieldDelimiter);
            //然后首字母小写
            if (result.Length == 1)
            {
                result = result.ToLower();
            }
            else
            {
                result = result.Substring(0, 1).ToLower() + result.Substring(1);
            }

            return result;
        }

        /// <summary>
        /// 判断给定字符串中是否所有的英文字母都是大写的
        /// </summary>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public static bool IsAllEnglishLetterUpperCase(string fieldName)
        {
            bool result = true;
            foreach (var t in fieldName)
            {
                //先判断是否是英文字母
                if (Regex.IsMatch(t.ToString(), "[a-zA-Z]+"))
                {
                    //再判断是否是小写
                    if (Regex.IsMatch(t.ToString(), "[a-z]+"))
                    {
                        result = false;
                        //立即跳出循环
                        break;
                    }
                }
            }

            return result;
        }

        /// <summary>
        /// 判断给定字符串中是否所有的英文字母都是小写的
        /// </summary>
        /// <param name="fieldName"></param>
        /// <returns></returns>
        public static bool IsAllEnglishLetterLowerCase(string fieldName)
        {
            bool result = true;
            foreach (var t in fieldName)
            {
                //先判断是否是英文字母
                if (Regex.IsMatch(t.ToString(), "[a-zA-Z]+"))
                {
                    //再判断是否是大写
                    if (Regex.IsMatch(t.ToString(), "[A-Z]+"))
                    {
                        result = false;
                        //立即跳出循环
                        break;
                    }
                }
            }

            return result;
        }
        /// <summary>
        /// 替换制定字符串中第一个指定字符为替代字符
        /// </summary>
        /// <param name="fieldName"></param>
        /// <param name="fieldDelimiter"></param>
        /// <param name="replacement"></param>
        /// <returns></returns>
        public static string ReplaceFirst(string fieldName, string fieldDelimiter, string replacement)
        {
            string result = fieldName;
            if (!string.IsNullOrWhiteSpace(fieldName) && !string.IsNullOrWhiteSpace(fieldDelimiter))
            {
                Regex reg = new Regex(fieldDelimiter);
                if (reg.IsMatch(fieldName))
                {
                    result = reg.Replace(fieldName, replacement, 1);
                }
            }
            return result;
        }

        #endregion

最后配个截图看一下效果吧

 

posted @ 2018-03-13 15:14  troy.cui  阅读(428)  评论(0编辑  收藏  举报