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 == )
{
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#代码规范化(代码风格化)的几个函数的更多相关文章
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...
- eclipse 代码清理 代码格式化 代码凝视
Code Style包含两个方面:代码清理,代码规范化.代码清理能够參考: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cle ...
- md语法之行内代码和代码片续集
md语法之行内代码和代码片 一行之内嵌入一小段代码, 简称行内代码. 其方法为: 用撇号把代码围起来. 比如: import numpy as ny就可以了. 代码片的方法: 三个连续的撇号+pyth ...
- md语法之行内代码和代码片
md语法之行内代码和代码片 比如说要在行内写上一句或者半句代码(代码的意思就是某种脚本语言), 用撇号围起来就可以了. 比如: import pandas as pd 写代码片(单独的一块脚本语言)的 ...
- 什么时候使用tab键来对齐代码和代码的风格
在大括号嵌套语法中, 最好是左右(前后) 大括号单独占一行, 这样的嵌套关系最清晰 也就是说, c/c++的风格是最清晰的. 而java php将 左大括号放在上一行的末尾, 稍次一点. 不过在if ...
- Java Core 学习笔记——3.char/Unicode/代码点/代码单元
通用字符集(UCS) UCS是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所制定的标准字符集. UCS包括了其他所有的字符集(包含了已知语言的所以字符). ISO/IEC 1 ...
- 国际C语言混乱代码大赛代码赏析(一)【转】
本文转载自:http://blog.csdn.net/ce123_zhouwei/article/details/9073869 国际C语言混乱代码大赛代码赏析(一) 近段时间在看<C专家编程& ...
- 统一社会信用代码+组织机构代码 校验 python
转自: https://blog.csdn.net/warrah/article/details/69338912 https://blog.csdn.net/qq_37142340/article/ ...
- 生成代码的代码 之 POJO生成器 之二 模板实现
在之前的一篇博客中,我们写了利用node.js来生成JAVA的POJO代码的方法.有评论说可以利用模板来做这件事.当时认为模板只能做简单的字符串替换,所以可能无法完成任务.但是,仔细的学习了一个模板 ...
随机推荐
- 边缘检测:Canny算子,Sobel算子,Laplace算子
1.canny算子 Canny边缘检测算子是John F.Canny于 1986 年开发出来的一个多级边缘检测算法.更为重要的是 Canny 创立了边缘检测计算理论(Computational the ...
- 理解js中私有变量
私有变量在js中是个什么概念.当下我的认识是var所定义的变量,实际可以理解为属性和方法,或者单单是临时存储器,不归属任何对象. 一个声明函数: function a(){ var v = &quo ...
- Java中基于HotSpot虚拟机的垃圾收集器
名称 过程 优缺点 Serial 进行垃圾收集时,必须暂停其他所有的工作进程,直到它收集结束.是一个单线程收集器. Stop the world. 新生代收集器. 手工设置新生代的大小:-Xmn Ed ...
- 基于ARM 构架(带MMU)的copy_from_user与copy_to_user详细分析
[转自:http://blog.chinaunix.net/uid-20543672-id-3195249.html] 在学习Linux内核驱动的时候,一开始就会碰到copy_from_use ...
- skb管理函数之skb_clone、pskb_copy、skb_copy
skb_clone--只复制skb描述符本身,如果只修改skb描述符则使用该函数克隆: pskb_copy--复制skb描述符+线性数据区域(包括skb_shared_info),如果需要修改描述符以 ...
- centos rar 文件打开办法
http://hi.baidu.com/nmxiaoxin/item/7642a139918a95677d034b6a Centos下解压rar.zip文件的方法 ============zip文件的 ...
- 在LINUX平台上手动创建多个实例(oracle11g)
在LINUX平台上手动创建多个实例(oracle11g) http://blog.csdn.net/sunchenglu7/article/details/39676659 ORACLE linux ...
- 过渡&动画
进入/离开&列表过渡 概述 Vue在插入,更新或者移除Dom时,提供多种不同方式的应用过渡效果.包括以下工具 在css过渡和动画中自动应用class 可以配合使用第三方css动画库,如Anim ...
- mongodb实现批量修改数据
var rds = db.REGIPATIENTREC.find({mzh:{$lt:"0"},usrOrg:"石景山中西医结合医院"}); var show ...
- spring boot&&cloud干货系列
接触spring boot也有些时日了,刚开始博主还想参照官方参考指南自己写一个系列的入门式的教程,包含spring boot的所有模块的用法,后来发现,有一大波优秀的系列文章和项目了,所以就没班门弄 ...