我在更换数组中的每个第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]方法不起作用。
答案 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)
你可以使用冒号替换六个部分用冒号替换第七个部分。
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;
答案 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)
注意:箭头表达式不适用于旧浏览器