js時間字串格式化以及url引數處理

O_o不想說話發表於2020-03-30

時間字元傳格式化

let time = '2020-3-30 23:2:00'
/* 
 *formatTime:時間字串格式化處理
 *  @params
 *      template:格式化模板字串,即我們期望獲取的日期格式的模板
 *      {0}->年 {1-5}->月日時分秒
 *  @return
 *      處理好的日期格式字串
 */
function formatTime(template = '{0}年{1}月{2}日 {3}時{4}分{5}秒') {
    let arr = this.match(/\d+/g);
    let reg = /\{(\d)\}/g;
    template = template.replace(reg, ($1, $2) => {
        return arr[$2].length<2 ? '0'+ arr[$2] : arr[$2];
    });
    return template;
}
String.prototype.formatTime = formatTime;
console.log(time.formatTime('{0}年{1}月{2}日 {3}時{4}分{5}秒')); //=>2020年03月30日 23時02分00秒
console.log(time.formatTime('{0}年{1}月{2}日')); //=>2020年03月30日
console.log(time.formatTime('{3}時{4}分{5}秒')); //=>23時02分00秒
複製程式碼

url引數處理

let url = 'https://mbd.baidu.com?context=%7B%&type=0&p_from=1#sss';
/* 
 * queryURLParams:獲取url引數
 *   @params
 *      url:被處理的url字串
 *   @return
 *      普通物件(該物件中雜湊值,以及等號左右組成字元組成的鍵值對)
 */
function queryURLParams(url) {
    let askIndex = url.indexOf('?'),
        wellIndex = url.lastIndexOf('#'),
        askText = '',
        wellText = '',
        obj = {};
    // 判斷是否存在#,如果存在擷取#後面的值,如果不存在讓wellIndex等於length
    wellIndex !== -1 ? wellText = url.substring(wellIndex + 1) : wellIndex = url.length;
    wellText ? obj.HASH = wellText : null;
    // 判斷問號是否存在
    askIndex !== -1 ? askText = url.substring(askIndex + 1, wellIndex) : null;
    if (askText) {
        let arr = askText.split('&');
        arr.forEach(item => {
            let newArr = item.split('=');
            obj[newArr[0]] = newArr[1];
        });
    }
    return obj;
}
let obj = queryURLParams(url);
console.log(obj); //=>{HASH: "sss", context: "%7B%", type: "0", p_from: "1"}

// 基於正則處理url引數
function queryURLParams(url) {
    let obj = {};
    url.replace(/([^#&?=]+)=([^#&?=]+)/g, (_, $1, $2) => obj[$1] = $2);
    url.replace(/#([^#&?=]+)/g, (_, $1) => obj['HASH'] = $1);
    return obj;
}
let obj = queryURLParams(url);
console.log(obj); //=>{HASH: "sss", context: "%7B%", type: "0", p_from: "1"}
複製程式碼

相關文章