【问题标题】:replace Array items with it's positions用它的位置替换数组项
【发布时间】:2015-04-13 19:48:46
【问题描述】:

我想用它的位置替换数组中的每个项目。简单的例子:

var items = 'ABCDefgh';
//how to replace items with its position to be
[0][1][2][3][4][5][6][7]

我使用它,但它只替换最后一项。

for(var i=0;i<items.length;i++){
var items_positions = items.replace(items[i],'['+items.indexOf(items[i])+']');
alert(items_positions);
}
// it returns ABCDefg[7]

并尝试使用正则表达式

for(var i=0;i<items.length;i++){
    var items_positions = items.replace(new RegExp(items[i],"g"),'['+items.indexOf(items[i])+']');
    alert(items_positions);
    }
    // it returns no thing

【问题讨论】:

  • 你为什么使用正则表达式?为什么不只计算字符串的长度,然后创建对应的位置数呢?
  • 我不明白你在做什么。这些位置只会增加所有内容的数字。
  • 这两种情况下的问题是,每次循环时,您都会用一次替换的结果覆盖items_positions。你没有组合所有的替代品。
  • 好的thanx回复和其他downvote,whats workarround!
  • 你为什么还要关心角色?如果您知道长度,只需从中生成您想要的结果。

标签: javascript arrays regex


【解决方案1】:

这实际上不需要正则表达式。

var items = 'ABCDefgh';
var items_positions = "";
for (var i = 0; i < items.length; i++) {
  
  items_positions += '[' + i + ']';
}
alert(items_positions)

【讨论】:

    【解决方案2】:

    您需要先复制items,然后每次通过循环更新它。无需使用indexOf() 来查找元素的位置,因为它始终与i 相同。

    var items = 'ABCDefghAfi';
    var items_positions = items;
    for (var i = 0; i < items.length; i++) {
      items_positions = items_positions.replace(new RegExp(items[i], 'g'), '[' + i + ']');
    }
    alert(items_positions);

    【讨论】:

    • 我不敢相信自己的眼睛
    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2023-03-24
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多