真实项目中的需求
1.时间字符串格式化
有一个时间字符串 “2018-4-4 16:26:8” ,我们想基于这个字符串获取到 “04月04日 16时26分”
/*
* 1.基于SPLIT按照空格把字符串拆成两部分(数组中的两项)
* 2.左边这一部分继续以SPLIT按照中杠来拆
* 3.右边这一部分继续以SPLIT按照冒号来拆
* 4.把需要的信息拼接在一起即可(拼接的时候不足十位的补零)
*/
function addZero(val) {
return val < 10 ? '0' + val : val;
}
var str = '2018-4-4 16:32:8';
var ary = str.split(' '),//=>["2018-4-4", "16:32:8"]
aryLeft = ary[0].split('-'),//=>["2018", "4", "4"]
aryRight = ary[1].split(':');//=>["16", "32", "8"]
var month = addZero(aryLeft[1]),
day = addZero(aryLeft[2]),
hour = addZero(aryRight[0]),
minute = addZero(aryRight[1]);
var result = month + '月' + day + '日 ' + hour + '时' + minute + '分';
console.log(result);
var str = "2018/4/6 12:48:6"; //=>"04-06 12:48"
var ary = str.split(/(?:\/| |:)/g);//=>["2018", "4", "6", "12", "48", "6"]
var res = addZero(ary[1]) + '-' + addZero(ary[2]) + ' ' + addZero(ary[3]) + ':' + addZero(ary[4]);
console.log(res);
暂时提高眼界的:
~function (pro) {
pro.formatTime = function (template) {
template = template || '{0}年{1}月{2}日 {3}时{4}分{5}秒';
var ary = this.match(/\d+/g);
template = template.replace(/\{(\d+)\}/g, function () {
var n = arguments[1],
val = ary[n] || '0';
val < 10 ? val = '0' + val : null;
return val;
});
return template;
}
}(String.prototype);
URL地址问号传参解析
有一个URL地址“http://www.zhufengpeixun.cn/stu/?lx=1&name=AA&sex=man” 地址问号后面的内容是我们需要解析出来的参数信息 { lx:1, name:'AA', sex:'man' }
/*
* 1.先找到问号,把问号后面的信息截取下来即可
* A.首先我们需要验证是否存在#哈希值,存在我们从问号开始截取到#,不存在我们直接截取到字符串的末尾
* 2.以&进行拆分(数组)
* 3.遍历数组中的每一项,把每一项在按照=进行拆分,把拆分后的第一项作为对象的属性名,第二项作为属性值进行存储即可
*/
var str = 'http://www.zhufengpeixun.cn/stu/?lx=1&name=AA&sex=man#teacher';//=>#后面的称为哈希(HASH)值,这个值可能有可能没有,我们需要处理,有的话我们截取的时候需要过滤掉
//=>获取问号和井号在字符串中索引位置
var indexASK = str.indexOf('?'),
indexWell = str.indexOf('#');
//=>#可能有可能没有
if (indexWell > -1) {
//=>存在井号,我们截取到井号的位置即可
str = str.substring(indexASK + 1, indexWell);
} else {
//=>没有井号,我们截取到末尾即可
str = str.substr(indexASK + 1);
}
//=>str='lx=1&name=AA&sex=man'
var ary = str.split('&'),//=>["lx=1", "name=AA", "sex=man"]
obj = {};
for (var i = 0; i < ary.length; i++) {
var item = ary[i],
itemAry = item.split('=');
//console.log(itemAry);//=>["lx", "1"] ["name", "AA"] ...
var key = itemAry[0],
value = itemAry[1];
obj[key] = value;
}
console.log(obj);//=>{lx: "1", name: "AA", sex: "man"}
提高眼界:
~function (pro) {
pro.queryURLParameter = function () {
var obj = {},
reg = /([^?=&#]+)(?:=([^?=&#]+)?)/g;
this.replace(reg, function () {
var key = arguments[1],
value = arguments[2] || null;
obj[key] = value;
});
return obj;
}
}(String.prototype);
var str = 'http://www.zhufengpeixun.cn/stu/?lx=1&name=&sex=#teacher';
console.log(str.queryURLParameter());