你是怎么把字符串“2016-11-16” 变为 “16/11/2016” 的? 【转】

一、前言:

有时候,我们需要对一些字符串中的字符进行位置变化处理。如 “2016-11-16” 需要调整为 “16/11/2016”。我们知道有很多方法可以使用,比如split()拆分成数组后在进行拼接,也可以使用正则表达式的分组机制来进行处理。下面我们就将这种方法进行实例对比:

二、split()方法:

split()方法主要是用于把一个字符串分割成字符串数组。
我们分析下字符串 “2016-11-16”,可以看出这个字符串是用比较规则的,数字之间是用 “-” 符号来分隔,所以我们可以使用 split(‘-‘) (意思是:hi,字符串 “2016-11-16”,你好!我现在要把你以 “-” 的方式拆分,在解析你的过程中,凡是碰到 “-”的时候,我就要从这里切一刀,最后把切好的字符串片段都存放到一个字符串数组中去) 的方法拆分字符串。


1

2

3

4

5

6

7

8

$(function(){

  var str = ‘2016-11-16‘,

      strArr = str.split(‘-‘); //输出: ["2016", "11", "16"]

  //进行字符串拼接处理  

  str = strArr[2]+‘/‘+strArr[1]+‘/‘+strArr[0];

  console.log(str); //输出:16/11/2016

});

现在,我们发现,用上面的split()方法很好用,尤其是拆分字符串的时候。那么接下来,我们换个难一点的字符串,也就是稍微不那么规则的字符串。看看我们的拆分过程是什么样的?


1

2

3

4

5

6

7

8

9

10

$(function(){

  var str = ‘abc2016-11.16‘,

      strArr = str.split(‘-‘), //输出: ["abc2016", "11.16"]

      strArr2 = strArr[0].split(‘abc‘), //输出: ["", "2016"]

      strArr3 = strArr[1].split(‘.‘); //输出: ["11", "16"]

  //进行字符串拼接处理  

  str = strArr3[1]+‘/‘+strArr3[0]+‘/‘+strArr2[1];

  console.log(str); //输出:16/11/2016

});

从上面的例子我们看出,不规则的字符串拆分,就是多次使用split()方法,只是拆分过程较为艰辛而已。但是,如果字符串 “abc2016-11.16” 中的 “abc” 不是固定的,那么你就不太好用split(‘abc‘)方法来拆分字符串了。

三、正则表达式分组方式:

接上面的实例,我们对应的正则表达式代码如下:


1

2

3

4

5

6

7

$(function(){

  var str = ‘2016-11-16‘,

      reg = /(\d{4})-(\d{2})-(\d{2})/g; // 正则表达式中的分组: (\d{4}) 、(\d{2}) 、(\d{2})。

  str = str.replace(reg, ‘$3/$2/$1‘); //$1、$2、$3分别表示上面的三个分组匹配结果

  console.log(str); //输出:16/11/2016

});

是不是很容易?好吧,我们再看看上面提到的那个稍微复杂一点的实例,如果用正则表达式分组来处理,代码应该是怎样的?


1

2

3

4

5

6

7

$(function(){

  var str = ‘abc2016-11.16‘,

      reg = /[a-z]+(\d{4})-(\d{2}).(\d{2})/g;

  str = str.replace(reg, ‘$3/$2/$1‘);

  console.log(str); //输出:16/11/2016

});

你会发现用正则表达式分组匹配结果的形式,在处理一些字符串较为复杂但依然有规可循的情况下,是非常有效的。当然,你可以发挥更多的想象空间,创造更为复杂的字符串,使用正则表达式分组的方式试一下吧!

转载自:http://www.cnblogs.com/yuanbo88/p/6070486.html

时间: 2024-10-15 03:02:59

你是怎么把字符串“2016-11-16” 变为 “16/11/2016” 的? 【转】的相关文章

2016年3月16日作业

软考中高项学员:2016年3月16日作业 1.请根据授课内容,梳理出今晚讲的重点. 项目整体管理 1.项目整体管理的过程包括如下内容:1.项目启动,制定项目章程.2.制定初步的项目范围说明书.3.制定项目管理计划.4.指导和管理项目的执行.5.监督和控制项目.6.整体变更控制.7.项目收尾.2.项目章程应当由项目组织以外的项目发起人发布,或者由投资人发布.项目章程为项目经理使用组织资源进行项目活动提供了授权.3.项目章程应当包括以下内容:1.基于项目干系人的需求和期望提出的要求.2.项目必须满足

Oracle中把一个DateTime的字符串转化成date类型。to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'),

Oracle中把一个DateTime或者该形态字符串转化成date类型. to_date('2016/12/8 18:55:43','yyyy/MM/dd hh24:mi:ss'), 或者: select to_date('2010-10-20 13:23:44','yyyy-mm-dd hh24:mi:ss')  from dual; 是用" /"还是" -"取决于字符串是什么结构的. date类型转换成char类型, 例子to_char(' ','yyyymmd

2016年9月16日-乔任梁逝世,陈乔恩发文悼念

今日(9月23日)凌晨,陈乔恩在微博发表长文悼念好友乔任梁,以下为陈乔恩微博全文: 生命是什么呢? 生命是不知道如何是好. 你永远停在2016年9月16日这一天 你是我在这里认识的第一个朋友, 一见如故,惺惺相惜. 你疼我就如疼女儿那样宠著, 你比我小却总让着我,你是个绅士. 你总是想办法给我惊喜,你是我的圣诞老人,是我的kimi叮当,是大家的有求必应先生. 你走了 走的那样安静,那样孤单,那样令人措手不及 我懵了 更多的是自责,我不知道你病的那么重 对不起对不起我的后知后觉 对不起对不起我没有

CSU 1803 2016(同余公式)2016年湖南省第十二届大学生计算机程序设计竞赛

题意给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:1. 1 ≤ a ≤ n, 1 ≤ b ≤ m;2. a×b 是 2016 的倍数. 样例输入32 632016 20161000000000 1000000000 样例输出1305767523146895502644 思路由同余公式可得a * b % 2016 = (a % 2016) * (b % 2016) % 2016所以如果 x*y 是2016的倍数的话,那么(2016*k + x)*y也是那么只需要统计1-n

2014年11月2日-11月9日 周总结

不敢相信一周的时间就这样过去了,只是简单的做了一个梦.醒来又是就是下周了. 周一周二所有的时间都是在准备地球制图的项目,周三编制制图报告.周四周五又都是在复习,准备地学信息分析与处理考试,一直都没有读书.一直到了周五晚上才有空读书.ArcGIS产品的白皮书,ENVI的产品白皮书和EV-Globe产品白皮书,粗略的浏览了一遍.又浏览了一下Matlab的帮助程序,收获很大,不过还是为了考试.值得高兴的是,计算机制图不需要考试,只需要交作品就好. 2014年11月10日-11月16日需要的事,AE二次

16.4 配置Tomcat监听80端口 16.5/16.6/16.7 配置Tomcat虚拟主机 16.8 Tomcat日志

16.4 配置Tomcat监听80端口 16.5/16.6/16.7 配置Tomcat虚拟主机 16.8 Tomcat日志 扩展 邱李的tomcat文档 https://www.linuser.com/forum.php?mod=forumdisplay&fid=37 JAR.WAR包区别 http://blog.csdn.net/lishehe/article/details/41607725 tomcat常见配置汇总 http://blog.sina.com.cn/s/blog_4ab26b

office 2016 专业增强版 和 visio 2016 专业版 下载安装(附带激活工

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://babyshen.blog.51cto.com/8405584/1697910 office 2016 专业增强版 和 visio 2016 专业版 下载安装(附带激活工具) 百度云盘下载地址 http://pan.baidu.com/s/1hqo6ZM8 安装的时候卸载以前的旧版office卸载方法:win+R 打开运行,输入appwiz.cpl,打开程序和功能,找到旧版off

mod_tile编译出错 -std=c++11 or -std=gnu++11

make[1]: 正在进入目录 /home/wml/src/mod_tile-master' depbase=echo src/gen_tile.o | sed 's|[^/]*$|.deps/&|;s|.o$||'`;\ g++ -DHAVE_CONFIG_H -I. -I./includes -I/usr/include/freetype2 -pthread -I/usr/local/include -I/usr/local/include/mapnik/agg -I/usr/include

淘宝双十一11促销神奇,双11十一充值送红包攻略,双11十一买手机有优惠吗淘宝活动详情

[双十一活动家装汽车会场] 简单,有弹性,喇叭口蛮大的.发过来淘宝双十一11促销神奇,双11十一充值送红包攻略,双11十一买手机有优惠吗的大了,本来想换的,还是怕麻烦,算了,送别人吧 .以后早点联系啊. 不错,慢慢都爱上茵曼了,价格便宜货也不错, 漂亮!!!!!!!!! 正穿着,颜色很艳 [双十一活动主会场] 买大了,75元转,有兴趣的mm联系我,旺旺:秋81705774 [>>>点此查看更多会场] 软软的,手感很好,很喜欢,物流也快,满意, 很好看,就是大了些 很好的宝贝! 颜色看上去

“封装”概念 的理解(2013-08-27 16:22:16)

在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别: 将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体, 也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员. 将数据与对数据的操作 在一个结构体内实现,使用时仅需要调用接口即可. "封装"概念 的理解(2013-08-27 16:22:16),布布扣,bubuko.com