第一種:使用遞迴的方式
這是網路上流傳的,使用遞迴反覆的補足 "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
沒有留言:
張貼留言