码迷,mamicode.com
首页 > 其他好文 > 详细

字符串操作工具-为开发加速

时间:2014-11-11 12:20:50      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   sp   for   

  平时遇到问题,总习惯于在网上寻找答案,大部分问题都能找到答案。感谢各位大拿的博客及贡献的解决办法。我们不能总是向大家索取,自己也得付出些吧。为此我开始写博客,与大家分享知识,分享快乐。

 

  人与动物的最大区别是什么?人会用工具,而动物不会。在日常的开发中,要面对形形色色的字符串处理。有很多简单而又重复的字符串需要进行处理,如果我们自己写个工具,将会是事半功倍。其实notepad++可以帮助我们。

如:我们将Id,Code,Title,Content,ReportType,ReportDate,RefRecord这几个字符串快速写成属性,只需要写两个正则表达就Ok

匹配的正则表达式:(\w+)

替换的正则表达式: public string $1 \{ get; set; \}

 bubuko.com,布布扣

替换后的结果

 bubuko.com,布布扣

当然属性的类型需要手动去改。

也可以反过来,将属性名从属性中提取出来

 bubuko.com,布布扣

 

 bubuko.com,布布扣

下面说下我自己写的一个小工具

 bubuko.com,布布扣

功能比较简单【首字母大/写】就不解释了。

【列名转属性】顾名思义就是将数据库中的列名,转成符合C#命名规范的属性名,如:USER_ID,USER_NAME,USER_AGE,转成UserId,UserName,UserAge

 bubuko.com,布布扣

 

就是将首字母大写去掉下划线,并将下划线后的第一个字母大写,其它字母小写。

 

【正则提取】是写个正则表达式,提取出索引部分,索引用0开始,0表示整个表达式

 bubuko.com,布布扣

 bubuko.com,布布扣

接下来说下代码及实现:

四个按钮对应了四个自己写的stirng的拓展方法,对扩展方法不熟的朋友,可先看这篇博客学习下http://www.cnblogs.com/suger/archive/2012/05/13/2498248.html, 这里不再详说。

这里的我单独写了个类库,别的地方要用,引用dll和命名空间即可。

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.IO;
  4 using System.Linq;
  5 using System.Text;
  6 using System.Text.RegularExpressions;
  7 using System.Threading;
  8 using System.Threading.Tasks;
  9 
 10 namespace System
 11 {
 12     public static class StringExt
 13     {
 14         /// <summary>
 15         /// 正则表达提取
 16         /// </summary>
 17         /// <param name="input">输入字符串</param>
 18         /// <param name="expression">正则表达式</param>
 19         /// <param name="index">索引</param>
 20         /// <returns>返回匹配后的结果</returns>
 21         public static string RegexExtraction(this string input, string expression, int index)
 22         {
 23             if (string.IsNullOrEmpty(input))
 24             {
 25                 return input;
 26             }
 27             var mc = Regex.Matches(input, expression);
 28             var sb = new StringBuilder();
 29             foreach (Match match in mc)
 30             {
 31                 sb.Append(match.Groups[index] + "\r\n");
 32             }
 33             return sb.ToString();
 34         }
 35 
 36         /// <summary>
 37         /// 正则表达提取
 38         /// </summary>
 39         /// <param name="input">输入字符串</param>
 40         /// <param name="expression">正则表达式</param>
 41         /// <returns>返回匹配后的结果</returns>
 42         public static string RegexExtraction(this string input, string expression)
 43         {
 44             return RegexExtraction(input, expression, 0);
 45         }
 46 
 47         /// <summary>
 48         /// 首字母大写
 49         /// </summary>
 50         /// <param name="text">要转换的字符串</param>
 51         /// <returns>返回转换结果</returns>
 52         public static string ToTitleCase(this string text)
 53         {
 54             if (string.IsNullOrEmpty(text))
 55             {
 56                 return text;
 57             }
 58             return Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(text);
 59         }
 60 
 61         /// <summary>
 62         /// 首字母小写
 63         /// </summary>
 64         /// <param name="text">要转换的字符串</param>
 65         /// <returns>返回转换结果</returns>
 66         public static string FirstLetterLower(this string text)
 67         {
 68             if (string.IsNullOrEmpty(text))
 69             {
 70                 return text;
 71             }
 72             var firstLetter = text[0];
 73             var result = text;
 74             if (firstLetter >= 65 && firstLetter <= 90)
 75             {
 76                 firstLetter = Convert.ToChar(firstLetter + 32);
 77                 result = firstLetter + text.Substring(1, text.Length - 1);
 78             }
 79             return result;
 80         }
 81         
 82         /// <summary>
 83         /// 列名转属性名
 84         /// </summary>
 85         /// <param name="columnName">列名</param>
 86         /// <returns>返回属性名</returns>
 87         public static string ToPropertyName(this string columnName)
 88         {
 89             if (string.IsNullOrEmpty(columnName))
 90             {
 91                 return columnName;
 92             }
 93             columnName = columnName.ToLower();
 94             var words = columnName.Split(new char[] { _ }, StringSplitOptions.RemoveEmptyEntries);
 95             var sb = new StringBuilder();
 96             foreach (var word in words)
 97             {
 98                 sb.Append(ToTitleCase(word));
 99             }
100             return sb.ToString();
101         }
102     }
103 }

 

 

 

以上是个人见解,如有不足与错误之处敬请批评指正。

字符串操作工具-为开发加速

标签:style   blog   http   io   color   ar   os   sp   for   

原文地址:http://www.cnblogs.com/xiaoafei1991/p/4088984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!