单词首字母大写
var str = 'my name is zhu-feng-pei-xun,i am 8 years old,i am qian duan pei xun no1!'; //var reg = /w+/g; //=>代表的是边界:单词左右两边是边界,-的左右两边也是边界, 所以这里会把 'zhu-feng-pei-xun' 算作四个单词(我们想把它当做一个) //=>1、先把混淆边界符的中杠替换为下划线 str = str.replace(/-/g, '_'); //=>2、通过边界符匹配到每一个单词 str = str.replace(/(w)(w*)/g, function () { return arguments[1].toUpperCase() + arguments[2]; }); //=>3、在把之前替换的下划线重新赋值为中杠 str = str.replace(/_/g, '-'); console.log(str);
时间字符串格式化
/* * 思路一:字符串拆分法 * 先按照空格把字符串拆成两部分 str.split(' ') => ['2017-11-07','16:37:00'] * 再把上面数组中的第一项和第二项分别获取到 * str1='2017-11-07' * 把这个字符串按照-拆 str1.split('-') =>['2017','11','07'] * str2='16:37:00' * 把这个字符串按照:拆 str2.split(':') =>['16','37','00'] * 最后把两个数组中的每一项按照指定格式拼接成为新的字符串 */ /* * 思路二:使用日期数据完成操作 * 首先把str变为标准的日期格式数据 new Date(str) =>Tue Nov 07 2017 16:37:00 GMT+0800 (中国标准时间) * 在IE浏览器中需要把原始字符串中的-替换为/才可以转换 str.replace(/-/g,'/') * * 使用Date类中提供的方法: * getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds...获取到年、月、日、小时、分钟、秒, 最后拼接成我们需要的数据 */
var str = '2017-11-07 16:37:00'; //=>'2017年11月07日 16时37分00秒' //=>使用正则实现 //1、执行一次捕获操作,得到需要的六个结果 var reg = /^(d{4})-(d{1,2})-(d{1,2})s+(d{1,2}):(d{1,2}):(d{1,2})$/g; // str = str.replace(reg, function () { // var arg = arguments; // return arg[1] + '年' + arg[2] + '月' + arg[3] + '日 ' + arg[4] + '时' + arg[5] + '分' + arg[6] + '秒'; // }); str = str.replace(reg, '$1年$2月$3日 $4时$5分$6秒');//=>$1等价于第一个分组中获取的内容,类似于上面代码的arg[1] console.log(str);//=>'2017年11月07日 16时37分00秒'
var str = '2017-11-07 16:37:00'; var reg = /d+/g, ary = str.match(reg);//=>["2017", "11", "07", "16", "37", "00"] var template = '{0}年{1}月{2}日 {3}时{4}分{5}秒'; //=>{0} ->ary[0] ->2017 //=>{1} ->ary[1] ->11 //=>... //=>我们首先获取模板中的{n}(同时获取数字n),把数字n作为ary的索引,获取到需要的日期数据,把获取的日期数据整体替换{n}即可 template = template.replace(/{(d+)}/g, function () { var index = arguments[1], value = ary[index]; return value; }); console.log(template);
String.prototype.myFormatTime = function myFormatTime() { var ary = this.match(/d+/g), template = arguments[0] || '{0}年{1}月{2}日 {3}时{4}分{5}秒'; template = template.replace(/{(d+)}/g, function () { var value = ary[arguments[1]] || '0'; value.length < 2 ? value = '0' + value : null; return value; }); return template; }; // var str = '2017-11-07'; // str = str.myFormatTime(); // console.log(str); //=>'2017年11月07日 00时00分00秒' // var str = '2017-11-07'; // str = str.myFormatTime('{1}-{2} {3}:{4}'); // console.log(str); // var str = '2017-11-07 17:48:3'; // str = str.myFormatTime('{3}:{4}:{5}'); // console.log(str); var str = '2017-11-07 17:48:3'; str = str.myFormatTime(); console.log(str);
去除字符串首尾空格
String.prototype.myTrim = function myTrim() { return this.replace(/^s+|s+$/g, ''); }; var str = ' 珠峰 培训 '; // console.log(str.trim()); // console.log(str.trimLeft()); // console.log(str.trimRight()); // str = str.replace(/^s+|s+$/g, ''); // console.log(str); console.log(str.myTrim());
URL地址栏问号传参值的解析
String.prototype.myQueryURLParameter = function myQueryURLParameter() { var obj = {}; this.replace(/([^?&=#]+)=([^?&=#]+)/g, function () { obj[arguments[1]] = arguments[2]; }); this.replace(/#([^?=&#]+)/g, function () { obj['HASH'] = arguments[1]; }); return obj; }; var url = 'http://www.zhufengpeixun.cn/stu/index.html?name=zxt&age=28&sex=0#teacher'; //=>{name:'zxt',age:28,sex:0,HASH:'teacher'} console.log(url.myQueryURLParameter());