近期因爲適配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
最後配個截圖看一下效果吧字符串