• 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

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

  • 相关阅读:
    洛谷 P3178 [HAOI2015]树上操作
    『学习笔记』线段树合并(洛谷P4556)
    『学习笔记』树链剖分(洛谷P3384)
    洛谷 P6218 [USACO06NOV] Round Numbers S
    洛谷 P4999 烦人的数学作业
    洛谷 P4317 花神的数论题
    洛谷P2602 [ZJOI2010]数字计数
    WAMPServer多站点配置
    自定义网站根目录
    网络编程——服务器与多客户端通信
  • 原文地址:https://www.cnblogs.com/cuiwenyuan/p/8557029.html
Copyright © 2020-2023  润新知