【问题标题】:replace string with numbers that resembles the string using string.replace()使用 string.replace() 将字符串替换为类似于字符串的数字
【发布时间】:2014-09-12 12:46:34
【问题描述】:

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

控制台给出 1,1,1 的输出。没有发生增量操作。

<html>
<body>
<script>

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

【问题讨论】:

  • 您的意思是要将"123" 转换为数字数组[1, 2, 3]?
  • yes.something like that but using a single line of code.
  • 如果您不想增加数字,var arr = '123'.split('').map(Number); 是我所知道的最简单的解决方案。
  • var a = "123".split('').map(function(item) { item = parseInt(item, 10); return ++item; }); 为我工作
  • 或者,在重新阅读时,它实际上是不是并且 OP 不想创建递增数字?

标签: javascript


【解决方案1】:

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

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]

【讨论】:

  • 你让我不必自己写答案:-)
  • 这不是只适用于“1234...”形式的字符串吗?我认为 OP 帖子中的那个只是一个例子。
  • @JLRishe 不,它用迭代索引替换数字中的任何数字(保留非数字符号)。
  • 因为k++ 只是一个表达式,而不是一个命令。 replace 函数将接收这个表达式的结果作为它的参数——它不会知道你是如何得到这个结果的。
  • 每次替换操作进行时都会调用回调; given 调用的返回值将用作替换值。毕竟,这就是为什么它被命名为callback。
【解决方案2】:

如果你不想增加数字:

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

如果你这样做:

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

【讨论】:

    猜你喜欢
    • 2021-05-20
    • 2019-04-14
    • 2014-11-12
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    相关资源
    最近更新 更多