直接修改字符串的元素

时间:2011-12-28 20:50:00

标签: javascript

我有一个字符串。它就像;

var str = "This is an example sentence, thanks.";

我想更改此字符串的每个第五个元素。

for(var i=5; i<=str.length; i=i+5)
{
   str[i]='X';  // it doesn't work, I need something like that
}

所以我希望str成为“ThisXis aX exaXple XenteXce,XhankX。”

有没有办法做到这一点?

5 个答案:

答案 0 :(得分:3)

使用 RegEx

str = str.replace(/(....)./g, "$1X")

jsfiddle

答案 1 :(得分:2)

var str = "This is an example sentence, thanks.";

var newString = "";
for(var i=0; i<str.length; i++)
{
   if ((i % 5) == 4) {
     newString += "X";
   } else {
     newString += str.charAt(i);
   }
}

这是一个正在运行的例子。 http://jsfiddle.net/WufuK/1

答案 2 :(得分:2)

您可以使用string.substring()

var a = "This is an example sentence, thanks.";
var result ="";
for(var i=0;i <a.length-1; i+=5){
    result +=a.substr(i, 4)+'X';
}

alert(result)

jsFiddle:http://jsfiddle.net/mVb4u/5

答案 3 :(得分:2)

你可以使用地图,虽然正则表达式解决方案看起来更好。

str = str.split('').map(function(chr, index){
  return (index % 5 === 4)? 'X' : chr;
}).join('');

答案 4 :(得分:2)

此方法使用Array.reduce,这是JavaScript 1.8的原生代码,但可以是backported

Array.prototype.reduce.call("This is an example sentence, thanks.", function(p,c,i,a) { return p + ( i % 5 == 4 ? "X" : c); });

更新:已更新,以反映我不是的评论。