我正在尝试为JavaScript找到一个表达式,它给出了特定位置的两个字符。
它始终是同一个呼叫所以它可能不会太复杂。
我总是一个10个字符长的数字,我想要替换前两个,两个在第3和第4位或两个在第5和第6位,依此类推。
到目前为止,我已经这样做了:
number.replace(/\d{2}/, index));
这用2个其他数字替换我的前2位数字。 但现在我想在数字应该被替换的位置包含一些变量,例如:
number.replace(/\d{atposx,atpox+1}/, index));
这意味着:
01234567891
我希望有时用02代替01,有时用56代替。
(或其他类似的东西)。
我希望我指出我想要的东西。
答案 0 :(得分:1)
此功能正常工作:
function replaceChars(input, startPos, replacement){
return input.substring(0,startPos) +
replacement +
input.substring(startPos+replacement.length)
}
用法:
replaceChars("0123456789",2,"55") // output: 0155456789
答案 1 :(得分:1)
数字很容易被解释为JS中的字符串。因此,如果您正在处理实际号码(即9876543210)而不是使用字符串表示的数字(即'987654321'),只需将数字转换为字符串(''。。concat (数字);)并且不要局限于你可以用数字做什么的约束。
以上两个例子都很好(呸,他们打败了我),但你甚至可以这样想:
var numberString = ''.concat(number);
var numberChunks = numberString.match(/(\d{2})/g);
您现在已经拥有了一系列的块,您可以通过这些块来浏览,切换,或者您想要遵循的任何其他类型的流。当你完成后,只需说......
numberString = numberChunks.join('');
number = parseInt(numberString, 10);
您已将您的号码作为本机号码(或跳过最后一部分以获取字符串)。而且,除此之外,如果你正在进行多次替换......你在数字中做的替换越多,将其分解成块并处理块的效率就越高。我做了一个快速测试,并且在单次更改时运行'replaceChars'功能的速度更快,但如果您对数据进行了两次或更多次更改,则速度会慢于拆分成数组。
希望有意义!
答案 2 :(得分:0)
你可以试试这个
function replaceAtIndex(str,value,index) {
return str.substr(0,index)+value+str.substr(index+value.length);
}
replaceAtIndex('0123456789','X',3); // returns "012X456789"
replaceAtIndex('0123456789','XY',3); // returns "012XY56789"