在考虑位数的情况下递增字符串 (0, 1, 2, .., 9, 00, 01)
Increment string with number of digits in mind (0, 1, 2, ..., 9, 00, 01)
我需要JavaScript中的一个函数(用于Node(,它可以递增字符串中的数字,如下所示:
"0", "1", "2", "3", ..., "8", "9", "00", "01", "02"
等等。我将如何做到这一点?我可以想到很多条件的长路,但这可能不会以最佳方式运行。
到目前为止,我拥有的:
var count = "0";
function increment() {
var number = parseInt(count), digits = count.length;
var upDigit = true;
for (var i = 0; i < digits; i++) {
if (i !== 9)
upDigit = false;
}
if (upDigit) {
var zeros = "";
for (var i = 0; i <= digits; i++) {
zeros += "0";
}
count = zeros;
} else {
count = number++;
}
}
根据我之前的回答:
function range(i, to) {
var v,
r = [],
s = to,
e = i.length,
t = Math.pow(10, e),
l = (t + '').length;
i = parseInt(i);
to = Math.pow(10, to.length);
for (; i <= to; i++) {
if (i === t) {
i = 0;
t = Math.pow(10, ++e);
l = (t + '').length;
}
v = new Array(l - (i + '').length).join('0') + i;
r.push(v);
if (v === s) { break; }
}
return r;
}
使用示例:
console.log(range('05', '15').join()); // "05,06,07,08,09,10,11,12,13,14,15"
function zeroPad(str, ln){
if(str.length > ln){ raise('Trying to zero pad a too-long string') };
var out = str;
while(out.length !== ln){
out = '0'+out;
};
return out;
}
function iterate(previous, final){
console.log(previous);
if(previous === final){ return };
var next = "";
var ln = previous.length; // how many characters so far
// use a regex to test if every character is 9
var nines =
previous.match(/^9+$/) ? true : false;
if(nines){
for(var i=0; i<ln+1; i++){
next += "0";
}
return iterate(next, final);
} else {
var value = +previous; // coerce to number
value += 1;
next = zeroPad(String(value), ln)
return iterate(next, final);
}
};
iterate("0", "000");
这是你期待的结果吗?
var e = 0,
t = 0,
l = 0,
i = 0;
for (; i <= 100; i++) {
if (i >= t) {
i = 0;
t = Math.pow(10, ++e);
l = (t + '').length;
}
console.log(new Array(l - (i + '').length).join('0') + i);
}
填充方式 :
new Array(2).join('0') == ['', ''].join('0') == '0'; // true
function pad(num) {
return num > 0 ? pad(num-1) + "0" : "";
}
function add(str) {
var len, num, numlen;
len = str.length;
num = +str;
numlen = String(num).length;
if (/^9+$/.test(num)) { return pad(len + 1); }
else { return pad(len - numlen) + String(num + 1); }
}
add('0078') // '0079'
add('0099') // '00000'
小提琴
好吧,
您可以尝试先将字符串转换为整数,然后递增 1,然后返回字符串,如下所示:
function incrementString(string){
var number = parseInt(string);
number++;
return number.toString();
}
相关文章:
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- 如何在不打断标记的情况下突出显示html字符串中的文本
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 如何避免JSON.stringify在特殊情况下返回undefined,从而为JSON.parse创建字符串失败
- 如何通过JS在不干扰其标记的情况下更改HTML文档中字符串的所有实例
- Javascript alert()在没有const字符串的情况下不显示
- 在这种情况下,如何将字符串添加到函数中 php
- 在不更改 HTML 的情况下操作 HTML 字符串的内容
- 限制字符串中显示的字符数,但在没有php的情况下以模态显示同一字符串中的所有字符
- 通过位置栏更改查询字符串,AJAX加载的菜单不会't在没有硬刷新的情况下重新填充
- 在保持字符串同等有效的情况下对其进行视觉加扰
- 如何在没有javascript中的split函数的情况下将字符串拆分为单词
- 在这种情况下,我如何在jquery中将字符串放入php中
- 在不渲染的情况下计算字符串大小
- 在不使用HTML的情况下对字符串中的换行符进行编码
- jQuery:在没有字符串选择器的情况下分离
- 在不使用AJAX的情况下将JSON字符串发送到php文件
- 如何在没有查询字符串和参数的情况下加载jQuery
- 在没有科学记数法的情况下将大数字转换为字符串
- 在 JavaScript 中给定时区字符串的情况下计算 UTC 偏移量