我有这个JavaScript:
var str = "abcdefoihewfojias".split('');
for (var i = 0; i < str.length; i++) {
var xp = str[i] = "|";
}
alert( str.join("") );
我的目标是用abcdefoihewfojias
替换字符串|
中的每四个字母,因此它变为abc|efo|....etc
,但我不知道如何做到这一点。
答案 0 :(得分:4)
您可以使用正则表达式替换来执行此操作:
var str = "abcdefoihewfojias";
var result = str.replace(/(...)./g, "$1|");
console.log(result);
&#13;
答案 1 :(得分:2)
这可以帮助您解决问题
var str = "abcdefoihewfojias".split("");
for (var i = 3; i < str.length - 1; i+=4) {
str[i] = "|";
}
alert( str.join("") );
你从第一个要替换的字符(3个字符)开始循环,直到结束前的一个数字,并替换每4个位置。
如果for循环将从str.length而不是str.length-1,有时在最后一个char将是|。
答案 2 :(得分:0)
简单使用模数
https://jsfiddle.net/ctfsorwg/
var str = "abcdefoihewfojias";
var outputStr = str.split("");
for (var i = 0; i < outputStr.length; i++) {
if(!((i+1)%4))outputStr[i] = '|';
}
alert( "Before: " + str + "\nAfter: " + outputStr.join(""));
答案 3 :(得分:0)
你可以使用这个单行:
var str = "abcdefoihewfojias";
str.split('').map(function(l,i) {
return (i + 1) % 4 ? l : '|';
}).join('');
%
返回余数。所以:
# | Result (# + 1) % 4
---|-------
0 | 1
1 | 2
2 | 3
4 | 0 // Bingo!
使用ES6,您可以:
[...str].map((l,i) => (i + 1) % 4 ? l : '|')