我正在尝试创建一个字符串增加器函数,该函数将采用一个字符串并将其提升为一个字符串,例如:
000000 是第一个字符串,然后是 000001 ,直到 000009 ,然后它进入 00000a 最多 00000z 。
我的想法是,我将最后一个模式( z )替换为第一个( 0 ),然后,找到要替换的点,并增加模式中的一个。
我尝试使用的代码:
cycler(string) {
//string="00000z"
var pos = string.replace('z', '0');
console.log(pos);
}
可悲的是,我意识到此函数的返回是被替换的版本,而不是我所追求的。完全合乎逻辑。
我想知道JavaScript中是否有一个函数可以找到所有替换的位置?
答案 0 :(得分:1)
如果我的理解正确,您想替换所有出现的内容。
cycler(string) {
//string="00000z"
var pos = string.replace(/z/g, '0');
console.log(pos);
}
如果误解,则忽略。谢谢。
答案 1 :(得分:1)
这样,您可以增加字符串。 首先,找到要更改的地方。然后您将其更改
const range = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
cycler = function(string) {
const pos = string.match(/[0-9a-z]z/ )
return pos === null ? string.length - 1 : pos.index
}
inc = function(string,pos) {
let rangeIndex = range.indexOf(string[pos]);
rangeIndex++;
let arr = string.split("");
arr[pos] = range[rangeIndex];
return arr.join("");
}
var string = '00002z';
const pos = cycler(string);
alert(inc(string,pos))
答案 2 :(得分:1)
我认为没有任何内置方法,但是您可以按以下方式创建自定义逻辑:
var orgstr = '000000';
var arr = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];
function getNextStr(str) {
var count = (str.match(/0/g) || []).length;
var rStr = ""
var found = str.replace(/0/g, '');
var next = getNext(found);
var nexIn = arr.indexOf(found) + 1;
if (next.length != found.length) {
rStr = str.slice(0, count - 1) + next;
} else {
rStr = str.slice(0, count) + next;
}
return rStr;
}
function getNext(fou) {
var str = '';
var nextTobeGrown = true;
for (var i = fou.length - 1; i >= 0; i--) {
var x = fou.substring(i + 1, i);
var ind = arr.indexOf(x);
if (nextTobeGrown) {
if (ind + 1 < arr.length) {
str += arr[ind + 1];
nextTobeGrown = false;
} else {
str += arr[0]
}
} else {
str += x;
}
}
//console.log(str)
if (nextTobeGrown) {
str += arr[0];
}
return str.split("").reverse().join("");;
}
var rst;
for (var i = 0; i < 160; i++) {
var org = i == 0 ? orgstr : rst;
rst = getNextStr(org);
console.log(rst)
}