通过正则表达式简化 JSON 时间格式转换操作
来源:互联网 发布:淘宝店铺运营费用 编辑:程序博客网 时间:2024/06/05 00:37
通过正则表达式简化 JSON 时间格式转换操作
项目中常常遇到传出格式为 /Date(xxxxx)/ 这样的 Json 时间字符串,有时为了方便进一步处理,需要将其转换为通用的 Date 类型。转换的步骤其实很简单:
- 取出字符串中的整数
- 利用 Date构造函数,实例化即可。
如此,我们可以有以下手段来解决:
- 通过字符串截取方式 (这是大部分人首先会想到的)
/** * 1. 通过截取字符串判定 Date 类型 * 2. 调用 2 次 replace 获取字符串中的整数 */ function convertToDate(jsonDate){ if(jsondate.substr(0, 5) == "/Date"){ var date = new Date(parseInt(jsondate.replace("/Date(", "").replace(")/", ""), 10)); return date; } return jsonDate }
以上代码,发生了一次字符串截取和两次替换操作。两次重复的 replace 操作,对于强迫症来说是不可接受的,是否可以减少?当然是可以的
- 通过正则表达式可以减少替换操作次数,于是有如下代码:
/** * 1. 通过截取字符串判定 Date 类型 * 2. 通过正则 /[^0-9]+/ 减少 replace 操作次数 */ function convertToDate(jsonDate){ if(jsondate.substr(0, 5) == "/Date"){ var date = new Date(parseInt(jsondate.replace(/[^0-9]+/g,''), 10)); return date; } return jsonDate }
ok,替换函数的调用次数减少为了 1 次。既然都使用正则表达式了,字符串截取似乎也有点不能忍。于是有如下代码:
/** * 1. 通过正则 /^\/Date\(\d+\)\/$/ 避免字符串截取操作 * 2. 通过正则 /[^0-9]+/ 减少 replace 操作次数 */ function convertToDate(jsonDate){ if(/^\/Date\(\d+\)\/$/gi.test(jsonDate)){ var date = new Date(parseInt(jsondate.replace(/[^0-9]+/g,''), 10)); return date; } return jsonDate }
这里似乎只是替换了许多字符串操作,但代码并么有明显简化相关操作,不满足啊。秉着不抛弃不放弃的原则,最后来一剂猛药:
/** * 1. 通过 /^\/Date\((\d+)\)\/$/ 判断时间格式同时提取整数 * 2. 摒弃字符串截取和查找替换操作 */ function convertToDate(jsonDate){ var ls = /^\/Date\((\d+)\)\/$/gi.exec(jsonDate); return ls ? new Date(parseInt(ls[1],10)) : jsonDate; }
至此,相对原有的方法,通过正则表达得到了一个更加精简的方式。
原文地址:https://github.com/chl1860/O2EThinking/blob/master/%E9%80%9A%E8%BF%87%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E7%AE%80%E5%8C%96%20JSON%20%E6%97%B6%E9%97%B4%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2%E6%93%8D%E4%BD%9C.md
阅读全文
0 0
- 通过正则表达式简化 JSON 时间格式转换操作
- 正则表达式---简化字符串操作
- 时间格式正则表达式
- 时间格式正则表达式
- json时间格式转换
- 【Json】时间格式转换
- 时间转换格式操作
- 时间格式的正则表达式
- 时间格式的正则表达式
- 时间格式的正则表达式
- 日期时间格式正则表达式
- JS转换JSON格式时间
- json转换时间格式为一般格式
- 判断json格式是否合法正则表达式
- Java通过正则表达式判断邮箱格式
- Js获取当前日期时间、比较及正则表达式转换格式
- js验证日期时间格式正则表达式
- 正则表达式-将秒数转化为时间格式
- 新的一天开始了
- 关于防重提交
- win10设置环境变量
- string indices must be integers --GP调用执行Python时报错
- linux命令---dstat
- 通过正则表达式简化 JSON 时间格式转换操作
- xss 攻击和 csrf 攻击浅显的理解
- IO输入输出流
- Android中m、mm、mmm、mma、mmma的区别
- 初识java
- openssl 非对称加密算法RSA命令详解
- php的一些简单知识
- 面试题:byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
- 类与对象