近期由于适配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. CPU上下文切换的次数和时间(context switch)

    什么是CPU上下文切换? 现在linux是大多基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要把当前状态保存下来,同时加载下一个任务,这个过程叫做上下文切换.时间片轮转的方式,使得 ...

  2. bzoj2516 电梯

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2516 [题解] 状压dp. $f_{sta,i}$表示状态为sta,当前在第i层的最小花费时 ...

  3. Spring中获取request的几种方法,及其线程安全性分析(山东数漫江湖)

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  4. 玩一下易语言 "和"字有多种读音,注定了它的重要性!!

    变量名 类型 静态 数组 备注 拼音 文本型   0   测试的汉字 文本型       有几种发音 整数型       i 整数型       测试用的汉字 = “和” 有几种发音 = 取发音数目 ...

  5. textarea输入框实时统计输入字符数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 解决不走onActivityResult方法

    最近在开发公司项目,在使用startActivityForResult关联俩个Activity中,发现A跳转到B,B设置setResult之后,A没有执行onActivityResult,查找一下,发 ...

  7. 多github帐号的SSH key切换

    我有两个github帐号,一个是个人所用,一个是为公司项目所用.如果是单用户(single-user),很方便,默认拿id_rsa与你的github服务器的公钥对比:如果是多用户(multi-user ...

  8. ie8下trim失效

    1.ie8下使用trim失效 trim可以除去字符串两侧的空白字符,但ie8并不支持 2.解决方案 String.prototype.trim = function () { return this ...

  9. python中BeautifulSoup模块

    BeautifulSoup模块是干嘛的? 答:通过html标签去快速匹配标签中的内容.效率相对比正则会好的多.效率跟xpath模块应该差不多. 一:解析器: BeautifulSoup(html,&q ...

  10. flask_返回字节流错误

    # flask_返回字节流错误 def export_data(filename, fields, data, names=None, sheet='Sheet1'): # fields 为list ...