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代码的方法.有评论说可以利用模板来做这件事.当时认为模板只能做简单的字符串替换,所以可能无法完成任务.但是,仔细的学习了一个模板 ...
随机推荐
- 使用awk批量杀进程的命令
在做系统运维的过程中,有时候会碰到需要杀掉某一类进程的时候,如何批量杀掉这些进程,使用awk命令是很好的选择. ps -ef|grep aaa|grep -v grep|awk '{print &qu ...
- MYSQL查找总结
a.条件判断where select * from 表 where id > 1 and name != 'alex' and num = 12; select * from 表 where ...
- NYOJ 1237 最大岛屿 (深搜)
题目链接 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王. 这是一个由海洋. ...
- centos7 多版本python并存问题
新的阿里云服务器,本身装有python2.7,但是项目需要python3,于是只能再装一个python3.6 参考文章:https://www.cnblogs.com/johnny1024/p/844 ...
- vue调试工具
在进行vue项目开发的时候,免不了要进行调试,谷歌插件vue-devtools可以帮忙 步骤 步骤一: 到谷歌商店搜索"vue-devtools"下载 步骤二: 在chrome的扩 ...
- word-wrap word-break 区别
word-wrap word-break 区别 word-break * word-break:break-all;//直接把单词截断 * word-break:break-word;//虽然单词截断 ...
- 浅谈游戏中BUFF的设计要点
其实这类帖子并没有多少的设计理论,对于策划的提升和帮助也并不大,原因其实在于其适用性太窄,当我要设计XX象棋的时候,它就滚一边去了. 废话不多说切入正题: 游戏中的BUFF/DEBUFF我们见过很多, ...
- foreign key constraint fails错误的原因
建表:CREATE TABLE Course ( Cno Char(4) PRIMARY KEY, Cname Char(40), Cpno Char(4), Ccredit Int, FOREIGN ...
- python基础===修改属性的值
可以以三种不同的方式修改属性的值:直接通过实例进行修改:通过方法进行设置:通过方法进行递增(增加特定的值).下面依次介绍这些方法. class Car(): def __init__(self, ma ...
- 计数排序的实现--适用于元素均较小的seq
今天无聊就打算把所有的排序算法都看一遍... 计数排序的时间复杂度是O(n),在算法导论中,用决策树模型中论证了,比较排序的情况为nlogn的复杂度.而计数排序的时间复杂度小于他的原因就是它不需要进行 ...