使用string.replace()将字符串替换为类似字符串的数字

时间:2014-09-12 12:46:34

标签: javascript

这里我有一行代码,我更愿意将'123'作为字符串值 然后在split()和join()的帮助下,它将变成类似'1,2,3'的字符串 然后我想用1,2....之类的实际数字替换所有数字字符串值 为此,我使用了一个名为k的变量,并给它一个初始值为1 我在replace中使用了一个增量运算符来改变k的值 但它没有用。也许我错了string.replace()如何执行替换操作 我也尝试使用parseInt('$1')它也没有用。

console给出1,1,1的输出。不进行增量操作。

<html>
<body>
<script>

(function(){
var k=1;
   console.log(prompt('input here').split('').join(',').replace(/(\d)/g,k++));
})();
</script>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

好吧,你可以使用替换回调:

var k = 1;
'123'.split('').join(',').replace(/\d/g, function() {
  return k++;
});

目前,k++ value 被视为参数 - 换句话说,此操作仅被评估一次。

但是如果你只想获得一系列整数,那么有更好的方法。例如:

function getSequence(start, end) {
  var res = [];
  for (var i = start; i <= end; i++) {
    res.push(i);
  }
  return res;

  // or just...
  // return Array.apply(0, Array(end - start + 1))
  //             .map(function(_, i) { return start + i });
  // ... if you feel adventurous. )
}
getSequence(2, 4); // [2, 3, 4]

答案 1 :(得分:2)

如果您不想增加数字:

var arr = '123'.split('').map(Number);

如果你这样做:

var arr = '123'.split('').map(function (num) { return Number(num) + 1; });