Javascript替换数组中的每第6个冒号

时间:2017-04-03 09:14:38

标签: javascript arrays replace

我在更换数组中的每个第6个冒号时遇到一些问题。尝试过使用Regex的东西,但这似乎不起作用。我有红色的其他问题是人们正在使用nth然后将这个varbele设置为你想要替换的索引,但无法弄清楚为什么它不起作用。我使用了join函数来替换','在我的数组中使用':'。

arrayProducts[i] = arrayProducts[i].join(':');

当我使用console.log(arrayProducts);时,这是我的结果:

F200:0:0.0000:1:100:0:1:KPO2:0:0.0000:1:200:0:2:HGB1:0:0.0000:1:300:0:3

这就是我想要的:

F200:0:0.0000:1:100:0:1,KPO2:0:0.0000:1:200:0:2,HGB1:0:0.0000:1:300:0:3

感谢阅读!

编辑:F200,KP02和HGB1,也可以是数字/数字,如:210,89,102,因此来自正则表达式的:[A-Z]方法不起作用。

6 个答案:

答案 0 :(得分:2)

您可以只计算结肠发生次数并替换它们中的每一个。

var str = 'F200:0:0.0000:1:100:0:1:KPO2:0:0.0000:1:200:0:2:HGB1:0:0.0000:1:300:0:3', counter = 0;
    res = str.replace(/:/g, function(v) {
      counter++;
      return !(counter % 7) ? ',' : v;
    });

    console.log(res);

答案 1 :(得分:1)

正则表达式解决方案是可行的。您可以使用函数作为.replace方法的第二个参数来充分利用反向引用。

var keyPressed = null;

function keyPress(key) {
  var event = document.createEvent('Event');
  event.keyCode = key;
  event.initEvent('keydown');
  document.dispatchEvent(event);
}

document.addEventListener('keydown', function(e){
   keyPressed = e.keyCode;
});

keyPress(37)
alert(keyPressed);

答案 2 :(得分:0)

您要找的是拆分以下表达式mystring.split(/:[A-Z]/).join(',') (假设您的行始终以此范围开头)

一个简单的解决方案可能是:

/:[A-Z]/

:匹配任何 writeFiledesc = open(argv[destFile], O_RDONLY | O_WRONLY | O_TRUNC); 后跟大写字母

答案 3 :(得分:0)

也许你可以尝试这种方法, 循环你的数组并手动加入它,如:

     var strarr = "F200:0:00000:1:100:0:1:KPO2:0:00000:1:200:0:2:HGB1:0:00000:1:300:0:3";
     var arr = strarr.split(":")

      var resStr = "";

       for(var i = 0; i < arr.length; i++)
       {
           if(i > 0 && i%7 == 0)
               resStr = resStr + ","  + arr[i]
           else
               resStr =  resStr + ( resStr == "" ? "" : ":") + arr[i];
        }

        console.log(resStr);

答案 4 :(得分:0)

你可以使用冒号替换六个部分用冒号替换第七个部分。

&#13;
&#13;
var string = 'F200:0:0.0000:1:100:0:1:KPO2:0:0.0000:1:200:0:2:HGB1:0:0.0000:1:300:0:3',
    result = string.replace(/(([^:]*:){6}[^:]*):/g, '$1,');

console.log(result);
&#13;
&#13;
&#13;

答案 5 :(得分:0)

另一种解决方案(基于迭代次数)

使用地图方法:

str.split(':').map((v, i) => (i % 7 === 0 ? ',' : ':') + v ).join('').slice(1)

使用 reduce 方法:

str.split(':').reduce((acc,v, i) =>  {    
    return acc +  (i % 7 === 0 ? ',' : ':' ) + v ;
}, '').slice(1)

注意:箭头表达式不适用于旧浏览器