近期由于适配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. VM 脚本回快照和开关机

    #Import PowerCLI*Get-Module -ListAvailable PowerCLI* | Import-Module #Resolve login issueSet-PowerCL ...

  2. 【uva11987】带删除的并查集

    题意:初始有N个集合,分别为 1 ,2 ,3 .....n.有三种操件1 p q 合并元素p和q的集合2 p q 把p元素移到q集合中3 p 输出p元素集合的个数及全部元素的和. 题解: 并查集.只是 ...

  3. 【BZOJ】1705: [Usaco2007 Nov]Telephone Wire 架设电话线

    [题意]给定一排n根杆高度hi,一个常数C,杆升高x的代价为x^2,相邻两杆之间架设电话线代价为高度差*C,求总代价最小. [算法]DP+辅助数组优化 [题解]令f[i][j]表示第i根杆高度为j的最 ...

  4. 【洛谷 P4320】 道路相遇 (圆方树,LCA)

    题目链接 题意:给一张无向图和\(M\)个询问,问\(u,v\)之间的路径的必经之点的个数. 对图建出圆方树,然后必经之点就是两点路径经过的原点个数,用\((dep[u]+dep[v]-dep[LCA ...

  5. POJ 3276 Face The Right Way (尺取法)

    题目链接 Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many of them are f ...

  6. solaris 服务器配置网络

    1. 修改配置文件 vi /etc/hostname.e1000g1  --e1000g1是硬件(网卡)的名称,不同的服务器名称不同 添加/修改:192.168.50.238              ...

  7. 【shell】shell中各种括号的作用()、(())、[]、[[]]、{}

    一.小括号,圆括号() 1.单小括号 ()    ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有 ...

  8. Part2-HttpClient官方教程-Chapter7-高级主题(Advanced topics) (HTTP Caching)

    原文链接 7.1 自定义客户端连接 在某些情况下,为了能够处理非标准的.不兼容的行为,可能需要自定义HTTP消息通过网络传输的方式,而不是使用HTTP参数.例如,对于web爬虫,可能有必要迫使Http ...

  9. Intel call指令

    转载:http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/ 最近有一个需求,给你个地址,看看这个地址前面是不是一个CALL指令 ...

  10. net_dev_init

    Kernel: 4.12.6 网络设备初始化,主要包括初始化softnet_data,注册收发包软中断等: static int __init net_dev_init(void) { int i, ...