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

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

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

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

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

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

替换后的结果

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

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

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

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

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

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

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

接下来说下代码及实现:

四个按钮对应了四个自己写的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 }

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

时间: 2024-10-08 14:19:18

字符串操作工具-为开发加速的相关文章

android byte字节数组转换十六进制字符串(物联网开发总结)

想起前段时间的物联网的外包开发,经常遇到通过wifi接受的数据,要通过转换成十六进制字符串,或者最后又是十进制数据.都是根据双方的协议来开发的.那么我发送过去的数据也需要,经过特殊转换成byte字节发过去,硬件那边收到不至于乱码的数据. 1.硬件调试发给android这边是十六进制数据 原始数据:68 38 38 68 A 72 78 55 34 12 43 23 01 07 Y 00 00 00 0C 13 78 56 34 12 0C 3B 78 34 12 0C 26 78 56 34 1

体验优秀的触屏网页开发加速滑动与回弹

一个接近naturalapp体验的加速滑动与回弹css3属性 前几天,楼主发表了一篇关于手机网页开发软键盘与fixed博文叫做:webapp前端开发软键盘与position:fixed为我们带来的不便 自以为总结的挺好挺有范,但是很不幸,通过学习交流很快就有了更好更完美的方案,而且还是来自safari原生控件实现,代码很简单 overflow-y:auto;-webkit-overflow-scrolling:touch; 效率很高的有着硬件加速的系统级控件,简约而不简单 代码很少很简单,但我们

Android开发网上的一些重要知识点[经验分享]

1. android单实例运行方法 我们都知道Android平台没有任务管理器,而内部App维护者一个Activity history stack来实现窗口显示和销毁,对于常规从快捷方式运行来看都是startActivity可能会使用FLAG_ACTIVITY_NEW_TASK标记来打开一个新窗口,比如Launcher,所以考虑单任务的实现方法比较简单,首先Android123纠正下大家一种错误的方法就是直接在androidmanifest.xml的application节点中加入android

字符串操作 — Google Guava

前言 Java 里字符串表示字符的不可变序列,创建后就不能更改.在我们日常的工作中,字符串的使用非常频繁,熟练的对其操作可以极大的提升我们的工作效率,今天要介绍的主角是 Google 开源的一个核心 Java 库 Guava,它提供了集合类型.不可变的集合.并发.I / O.缓存.字符串等许多实用功能.在本文中,我们将学习使用 Guava 中的 Strings 和 Splitter 字符串操作工具类. 如何使用 Google Guava 会同步到 Maven Central 中,所以,如果你是

JAVA基础——重新认识String字符串

深入剖析Java之String字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象有三种方法 String s1="我是字符串1"; String s2=new String();//创建一个空的字符串对象 String s3=new String("我是字符串2&q

java中的字符串简介,字符串的优化以及如何高效率的使用字符串

简介 String最为java中最重要的数据类型.字符串是软件开发中最重要的对象之一,通常,字符串对象在内存中总是占据着最大的空间块.所以,高效处理字符串,将提高系统的整个性能. 在java语言中,String对象可以认为是char数组的衍生和进一步的封装.它的主要组成部分是:char数组.偏移量和string的长度.char数组表示string的内容,它是string对象所表示字符串的超集.String的真实内容还需要偏移量和长度在这个char数组中进一步定位和截取.(查看java源代码可以看

利用OpenShift托管Node.js Web服务进行微信公众号开发

最近写了一个微信的翻译机器人.用户只要关注该微信号,发送英文的消息,就能收到中文翻译的回复.后台是用Node.js写的,托管在OpenShift的Paas平台上.翻译过程实际上是调用微软的Bing translation API做的,代码中用到了alexu84的bing-translate和JacksonTian的wechat这两个npm模块.下面把做的过程详细说一下. 1. 微信公众号开发 首先是要到https://mp.weixin.qq.com 申请一个公众号,并申请成为开发者.目前个人只

Java 之字符串(7)

什么是 Java 中的字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串.其实,在前面的章节中我们就已经使用了字符串, 例如我们在控制台中输出的 "Hello World" . "imooc"等. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象的方法: Java 中字符串的不变性 String 对象创建后

java从基础知识(二)字符串处理

字符串是程序开发中使用最为频繁,因此为了工作的高效和作为一名想进阶的程序员,了解并掌握字符串的处理显得尤为重要.java为我们提供了String.StringBuffer.StringBuilde三个处理字符串的类,下面我们对其做一个总结和介绍. 1.分别介绍 1)String 解答1: 我们在查看API文档的时候,会发现有这么一句话"字符串是常量,它们的值在创建之后不能更改".众所周知常量是用final修饰的,一旦创建在程序的其他地方无法修改.这时我们就会快速的回想,在我们日常的开发