例如:指定返回字符串长度是4,操作数是5,如何将这个5,变为'0005'返回
谢谢大家的回答!回答里有好几种思路,受益匪浅,再次感谢大家的回答,谢谢!
例如:指定返回字符串长度是4,操作数是5,如何将这个5,变为'0005'返回
谢谢大家的回答!回答里有好几种思路,受益匪浅,再次感谢大家的回答,谢谢!
javascript
//给数字字符串补零,不支持负数 function padNumber(num, fill) { //改自:http://blog.csdn.net/aimingoo/article/details/4492592 var len = ('' + num).length; return (Array( fill > len ? fill - len + 1 || 0 : 0 ).join(0) + num); }
曾经拜读过在js中做数字字符串补0 这篇文章,受益匪浅,这个是在月影提供的版本上改进强壮了一点点的实现。
前辈们的思考值得我们学习。
function foo(str){
str ='00000'+str;
return str.substring(str.length-5,str.length);
}
不支持负数的话,可以这样:
function zfill(num, size) {
var s = "000000000" + num;
return s.substr(s.length-size);
}
javascript
function preZeroFill (num, size) { if (num >= Math.pow(10, size)) { //如果num本身位数不小于size位 return num.toString(); } else { var _str = Array(size + 1).join('0') + num; return _str.slice(_str.length - size); } } preZeroFill(5, 4);
此方法借鉴自captainblue的回答,并做优化,给赞请给captainblue.
function padLeft(number, size) {
return number.toFixed(size - number.toString().length).replace('.', '').split('').reverse().join('');
}
javascript
if (!String.prototype.zfill) { String.prototype.zfill = function(len) { if (len == undefined || typeof len != 'number' || this.length >= len) {return this.toString()} return Array(len - this.length + 1).join('0') + this; } }
javascript
function prefix(size, num) { var sLen = ('' + num).length; if (sLen >= size) { return '' + num; } var preZero = (new Array(size)).join('0'); return preZero.substring(0, size - sLen) + num; }
参考了ls的答案。
//正整数前置0
var addZore=function(num,len){
return Array(Math.abs(("" + num).length - ((len || 2) + 1))).join(0) + num
}
答案应当用上 位运算 , 下面是我给出的答案;
操作很骚 请做好;
var len = 100000; //-> 1 00000(5) 保留5位 如果想动态指定位数则可以使用
var len = Math.pow(10,5+1); //-> 5 是你需要动态的位数 加1 是多增加一倍
var v = 12345; //-> 这个是你需要转换的值
var res = (len | v).toString().substr(1); //-> 去掉首位的1
//-> 下面封装函数
/**
*/
function addZore(val,len){
return (Math.pow(10,len+1) | val).toString().substr(1);
}
//-> 此外你还可以这样 但是有兼容性问题
//-> 点击此处参考padStart的兼容性
function addZore(val,len){
return String(val).padStart(len,"0");
}
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
出了新方法啦!
padStart()
padEnd()