在特定位置查找数字

时间:2011-08-24 07:37:06

标签: javascript regex numbers replace

我正在尝试为JavaScript找到一个表达式,它给出了特定位置的两个字符。

它始终是同一个呼叫所以它可能不会太复杂。

我总是一个10个字符长的数字,我想要替换前两个,两个在第3和第4位或两个在第5和第6位,依此类推。

到目前为止,我已经这样做了:

number.replace(/\d{2}/, index));

这用2个其他数字替换我的前2位数字。 但现在我想在数字应该被替换的位置包含一些变量,例如:

number.replace(/\d{atposx,atpox+1}/, index));

这意味着:

01234567891

我希望有时用02代替01,有时用56代替。

(或其他类似的东西)。

我希望我指出我想要的东西。

3 个答案:

答案 0 :(得分:1)

此功能正常工作:

function replaceChars(input, startPos, replacement){
   return input.substring(0,startPos) + 
        replacement + 
        input.substring(startPos+replacement.length)  
}

用法:

replaceChars("0123456789",2,"55") // output: 0155456789

实例:http://jsfiddle.net/FnkpT/

答案 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"