zoukankan      html  css  js  c++  java
  • 初级程序员走向高级程序员的关键一步-正则表达式

    有点标题党了

    但我确实发现很多工作一两年甚至三五年的人,不知道或者不习惯用正则表达式。 确实,不用它,你的程序/功能也是一样开发,比如用很多字符串处理函数。但是,一旦你用过它,单车变摩托后,你就欲罢不能了。

    它到底用来干嘛那?,下图别人总结的挺好了。 

    按我自己的理解那,这玩意能极大的提高你的工作效率。只要你的想象力有多丰富,它给你提升的效率就有多牛X

    基础我就不讲了,有太多教程可以看了,讲的肯定比我好。https://www.runoob.com/regexp/regexp-tutorial.html

    下面讲讲我最近的一个案例

    我做一个服务器,接收各个客户端发过来的JSON串消息,解析JSON串,把里面的内容保存到数据库。很简单明了的一个过程。但问题是,JSON串可能的格式很多,比如有100种。。。

    {
    "cmd": "repair_complete_msg",--机修完成
    "hub_sn": "80000111", --网关编号
    "dev_sn": "00000001",              --采集器编号
     "mach_id": "0001",--机台编号
     "worker_id": "1012",--机修工ID
     "time": "2019-12-25 14:48:25.111" --时间
    }
    

    如上,是其中一种,我处理过程大概是,1 定义相应的类 ,   2 JSON串反序列化为相应类的对象  3 得到对象的属性值,插入数据库  。对应的类定义如下

    public class repair_complete_msg
    {
    
    public string cmd { get; set; }// "repair_complete_msg",	--机修完成
    public string hub_sn { get; set; }// "80000111",	--网关编号
    public string dev_sn { get; set; }// "00000001",	--采集器编号
    
    public string mach_id { get; set; }// "0001",	--机台编号
    public string worker_id { get; set; }// "1012",	--机修工ID
    public string time { get; set; }// "2019-12-25 14:48:25.111"	--时间
    
    }
    

      

    如果有100种字段不一的JSON格式,单是类定义我就要搞眼花了

    下面我们用正则表达式来一顿骚操作

    首先在notepad++(任何支持正则替换的编辑器都行)里打开这个JOSN。

    step1 找到所有   "cmd":  这样格式的,他们对应一个类的属性  找他们的正则表达式为 "([^:|^"]*)":    ,意思是  " 开头    ": 结尾,中间不能有 " 并把括号()里面匹配内容标记为 $1  

      替换为public string $1{ get; set; } //

    替换结果如下

    省力把?这就是你不加班的秘诀

    假设我们每一个JSON串都有一个共有属性 ,我们把这个XXXXX拿出来作为类名。这样,这个类的生成就是全自动了,如何做那? 点一下下图种的替换,类名就出来了。

    "cmd": "XXXXX",--机修完成

    讲了半天,也没有正儿八经的讲讲正则表达式。

    但是我觉得,授人以鱼不如授人以渔。知识就在那里,它是固定的。解决问题的思路,它是灵活的,与其枯燥讲语法,不如展示一下用它的一些骚操作,让人更有学习的动力

  • 相关阅读:
    Android Sqlite 增删改查
    Android SQLiteOpenHelper Sqlite数据库升级onUpgrade
    Android SQLiteOpenHelper Sqlite数据库的创建与打开
    Android Xml,PullParser,解析
    Android Xml文件生成,Xml数据格式写入
    Android Studio生成get,set,tostring,构造方法
    Android SharedPreference
    Android 文件模式
    Android 权限的由来
    C++ essentials 之 union
  • 原文地址:https://www.cnblogs.com/CSSZBB/p/13850865.html
Copyright © 2011-2022 走看看