替换字符串中的每个第n个字符

时间:2015-08-16 00:32:37

标签: javascript string

我有这个JavaScript:

var str = "abcdefoihewfojias".split('');

for (var i = 0; i < str.length; i++) {
    var xp = str[i] = "|";
}
alert( str.join("") );

我的目标是用abcdefoihewfojias替换字符串|中的每四个字母,因此它变为abc|efo|....etc,但我不知道如何做到这一点。

4 个答案:

答案 0 :(得分:4)

您可以使用正则表达式替换来执行此操作:

&#13;
&#13;
var str = "abcdefoihewfojias";
    
var result = str.replace(/(...)./g, "$1|");

console.log(result);
&#13;
&#13;
&#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)

.map one-liner

你可以使用这个单行:

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替代

使用ES6,您可以:

[...str].map((l,i) => (i + 1) % 4 ? l : '|')
相关问题