近期由于适配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 == )
{
result = fieldName.ToUpper();
}
else
{
if (string.IsNullOrWhiteSpace(fieldDelimiter))
{
result = fieldName.Substring(, ).ToUpper() + fieldName.Substring();
}
else
{
if (fieldName.Contains(fieldDelimiter))
{
//全部小写
string[] array = fieldName.ToLower().Split(fieldDelimiter.ToCharArray());
foreach (var t in array)
{
//万一多个分隔符连续,会有空值产生
if (!string.IsNullOrWhiteSpace(t))
{
//首字母大写
result += t.Substring(, ).ToUpper() + t.Substring();
}
}
}
else if (IsAllEnglishLetterUpperCase(fieldName))
{
//如果字段中的英文字符全部都是大写的,特别针对Oracle数据库的字段
result = fieldName.Substring(, ).ToUpper() + fieldName.Substring().ToLower();
}
else
{
result = fieldName.Substring(, ).ToUpper() + fieldName.Substring();
}
}
}
} 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 == )
{
result = result.ToLower();
}
else
{
result = result.Substring(, ).ToLower() + result.Substring();
} 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, );
}
}
return result;
} #endregion

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

C#代码规范化(代码风格化)的几个函数的更多相关文章

  1. 项目git commit时卡主不良代码:husky让Git检查代码规范化工作

    看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...

  2. eclipse 代码清理 代码格式化 代码凝视

    Code Style包含两个方面:代码清理,代码规范化.代码清理能够參考: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cle ...

  3. md语法之行内代码和代码片续集

    md语法之行内代码和代码片 一行之内嵌入一小段代码, 简称行内代码. 其方法为: 用撇号把代码围起来. 比如: import numpy as ny就可以了. 代码片的方法: 三个连续的撇号+pyth ...

  4. md语法之行内代码和代码片

    md语法之行内代码和代码片 比如说要在行内写上一句或者半句代码(代码的意思就是某种脚本语言), 用撇号围起来就可以了. 比如: import pandas as pd 写代码片(单独的一块脚本语言)的 ...

  5. 什么时候使用tab键来对齐代码和代码的风格

    在大括号嵌套语法中, 最好是左右(前后) 大括号单独占一行, 这样的嵌套关系最清晰 也就是说, c/c++的风格是最清晰的. 而java php将 左大括号放在上一行的末尾, 稍次一点. 不过在if ...

  6. Java Core 学习笔记——3.char/Unicode/代码点/代码单元

    通用字符集(UCS) UCS是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所制定的标准字符集. UCS包括了其他所有的字符集(包含了已知语言的所以字符). ISO/IEC 1 ...

  7. 国际C语言混乱代码大赛代码赏析(一)【转】

    本文转载自:http://blog.csdn.net/ce123_zhouwei/article/details/9073869 国际C语言混乱代码大赛代码赏析(一) 近段时间在看<C专家编程& ...

  8. 统一社会信用代码+组织机构代码 校验 python

    转自: https://blog.csdn.net/warrah/article/details/69338912 https://blog.csdn.net/qq_37142340/article/ ...

  9. 生成代码的代码 之 POJO生成器 之二 模板实现

    在之前的一篇博客中,我们写了利用node.js来生成JAVA的POJO代码的方法.有评论说可以利用模板来做这件事.当时认为模板只能做简单的字符串替换,所以可能无法完成任务.但是,仔细的学习了一个模板 ...

随机推荐

  1. 【Codeforces549F】Yura and Developers [单调栈][二分]

    Yura and Developers Time Limit: 20 Sec  Memory Limit: 512 MB Description Input Output Sample Input 4 ...

  2. 【51NOD】斜率最大

    [题解]通过画图易得结论:最大斜率一定出现在相邻两点之间. #include<cstdio> #include<algorithm> #include<cstring&g ...

  3. 炒鸡简单的canvas粒子(山东数漫江湖)

    位图的canvas一直不会被svg比下去的原因了. 俗话说,须弥芥子,是大小之说,也有以小见大之说,颗颗粒子,足以构建宏大效果. 这是一篇炒鸡简单的canvas粒子教程,主要是讲如何粒子特效的原理,一 ...

  4. [Unity]游戏Inside中的Chromatic Aberration效果学习

    Chromatic Aberration效果指的是模拟摄像机的拍摄瑕疵导致rgb三个通道的颜色发生了偏移,如 传统的Chromatic Aberration实现往往是基于一个后处理,将rgb采样的坐标 ...

  5. Laravel 5.2 四、.env 文件与模型操作

    一..env文件 .env 文件是应用的环境配置文件,在配置应用参数.数据库连接.缓存处理时都会使用这个文件. // 应用相关参数 APP_ENV=local APP_DEBUG=true //应用调 ...

  6. barrier 和 preempt_disable() 学习【转】

    #define preempt_disable() \ do{ \ inc_preempt_count(); \ barrier();    \ }while(0) 一.这个barrier 在干什么. ...

  7. 10 个打造 React.js App 的最佳 UI 框架

    10 个打造 React.js App 的最佳 UI 框架 在本文中,我们将分享一些助你打造 React.js App 最佳的 UI 框架.它们具备你所需要的基本 React 组件,以及易用的 API ...

  8. canvas画画板,canvas画五角星,canvas制作钟表、Konva写钟表

    制作一个画画板,有清屏有橡皮擦有画笔可以换颜色 style样式 <head> <meta charset="UTF-8"> <title>画画板 ...

  9. vue做购物车

    写一点废话,昨天敲代码找bug,找了好久都没找到,后来一哥们找到他说,找代码的bug就像男女朋友吵架,女问男你错了没,男说错啦,女再问错哪了,男傻眼了不知道错哪.在找代码的过程中一直知道我错啦就是找不 ...

  10. JS函数和变量名称冲突

    在JS中如果函数名与变量名冲突,JS是怎么执行的? <script> console.log(sum);//function sum(){} function sum(){} var su ...