2013年10月20日 星期日

JavaScript 補零

這邊介紹兩種在數字前面補 0 的方法 (例如 1,想顯示成 01)

第一種:使用遞迴的方式
這是網路上流傳的,使用遞迴反覆的補足 "0"
但我多加了 str = '' + str; 這一行
將傳入的參數轉型為字串
不然如果傳入的參數是數字
str.length 會得到 undefined
這樣就至少會補一次"0"
一般情況是不會有問題
但如果傳入的參數是數字且不用補"0"
例如:padLeft(12,2) 會得到 "012",而不是預期的 "12"
/* 左邊補0 */
function padLeft(str, len) {
    str = '' + str;
    if (str.length >= len) {
        return str;
    } else {
        return padLeft("0" + str, len);
    }
}

/* 右邊補0 */
function padRight(str, len) {
    str = '' + str;
    if (str.length >= len) {
        return str;
    } else {
        return padRight(str + "0", len);
    }
}



第二種:使用 array join 的方式 
使用 array join 的方式,一次產生要補足的 "0"
/* 左邊補0 */
function padLeft(str, len) {
    str = '' + str;
    return str.length >= len ? str : new Array(len - str.length + 1).join("0") + str;
}

/* 右邊補0 */
function padRight(str, len) {
    str = '' + str;
    return str.length >= len ? str : str + new Array(len - str.length + 1).join("0");
}




參考:
http://www.dotblogs.com.tw/pinpingo/archive/2011/07/26/32140.aspx
http://stackoverflow.com/questions/10073699/pad-a-number-with-leading-zeros-in-javascript

沒有留言:

張貼留言