C#代碼規範化(代碼風格化)的幾個函數

近期因爲適配Oracle的緣故,將旺財C#.NET代碼生成器增長了風格化的幾個函數,具體實現以下功能:數據庫

一、轉換爲Pascal風格,如User_Name/USER_NAME/UserName自動替換下劃線分隔符後,生成爲UserName函數

二、轉換爲Camel風格,就是將Pascal的第一個字母小寫,如上例:userNamespa

三、替換表前綴,也就是替換第一個匹配到的字符code

四、判斷給定字符串中的英文字母是否都爲大寫或小寫blog

 

#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

最後配個截圖看一下效果吧字符串

相關文章
相關標籤/搜索