gpt4 book ai didi

javascript - 如何替换字符串开头和其中特定位置的字符?

转载 作者:行者123 更新时间:2023-12-02 23:05:55 25 4
gpt4 key购买 nike

我有一个函数,它创建一串由逗号分隔的零和一(0 和 1)。我需要删除逗号。我有这方面的代码。

我需要在遇到数字 1 之前计算字符串开头 0 的数量,并将 0 的数量存储为 tmpstr1。 需要代码

最多有六个 0。至少没有 0(字符串可能已经以 1 开头)。

然后从字符串的开头向前数 112 个字符,然后字符串中的下一个字符(数量等于 tmpstr1)应该转换为 0(即使它们已经是 0,也可以转换)。需要代码

我可以从上面提供的代码中获取所有其余代码

接下来会发生什么:从字符串的开头开始,向前数 119 个空格,然后字符串中的下一个字符(数量等于 tmpstr1)应转换为 0。每次前进 7 个字符。重复直到字符串末尾,即长度为 203 个字符。如果从字符串的开头删除两个 0,则字符 113 和 114 将是前 2 个字符被替换,依此类推……如果从字符串的开头删除三个 0,则字符 113、114 和 115 将是前 3 个字符被替换,依此类推……

我有删除前导 0 的最终代码,但对其余部分感到困惑。有很多在字符串中查找字符的示例,但不仅仅是在遇到另一个字符之前的开头。替换也是如此。仅针对特定位置的“n”个字符没有任何内容。

好的,我现在有了第一部分(查找前导 0 的数量)。修改后的代码如下:

这是到目前为止的代码:

  for(var row= 0, rowStates=[]; row<rowsCount; ++row){
rowStates = sheetStates[row];
timesheetrowsdata += rowStates+(row==rowsCount?'':',');
}

//Remove the commas
timesheetcoldata = timesheetrowsdata.replace(/,/g, '');

var tmpstr1 = timesheetcoldata.search(/1/);

//code here to replace the first round of characters.
//code here to replace the second round of characters.
//and so on.......

// strip any leading 0's
while(timesheetcoldata.charAt(0) === '0'){
timesheetcoldata = timesheetcoldata.substr(1);
}

这是需要替换的示例字符串(带有 3 个前导 0):

00010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010001111000111100011110001111000111000011100001110000111000011100001110000000000000000000000000

用字符113、114、115等........全部替换:

00010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000000000000000000000000000000000000000000000000000000000000000

最后删除了前导零:

10000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000000000000000000000000000000000000000000000000000000000000000

最佳答案

如果我理解正确,您正在寻找的代码是这样的:

var sourceString = '00010000001000000100000010000001000000100000010000001000000100000010000001000000100000010000001000000100000010001111000111100011110001111000111000011100001110000111000011100001110000000000000000000000000';

function recode(s) {
// i'll try to create an easy to follow piece of code, so some logic is deliberately "old fashioned"

// phase 1, determine number of leading zeroes
var countLeadingZeroes = 0;
while (s[countLeadingZeroes] == 0)
{
countLeadingZeroes += 1;
}
var amountNonReplaced = 7 - countLeadingZeroes

// phase 2, skip 112 chars, and start replaceing <countLeadingZeroes> every 7 chars
var startIdx = 112
w = s.slice(0,startIdx);

while (startIdx < 203) {

for (var i = 0; i<countLeadingZeroes;i++) {
w += '0'
startIdx += 1;
}
for (var i =0; i<amountNonReplaced;i++) {
w += s.slice(startIdx,startIdx+1);
startIdx += 1;
}
}
return w;
}

alert(recode(sourceString));

关于javascript - 如何替换字符串开头和其中特定位置的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com