2011-12-28 6 views
1

文字列があります。それはちょうどのようです。文字列の要素を直接変更する

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

この文字列の5番目の要素をすべて変更します。

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"にします。

これを行う方法はありますか?

+0

[concat()](http://www.w3schools.com/jsref/jsref_concat_string.asp)と[substring()](http://www.w3schools.com/jsref/jsref_substring)で試してみましたか? ASP)? – danihp

+0

少し説明できますか? – Rckt

+0

ここに関連する議論です。http://stackoverflow.com/questions/1431094/how-do-i-replace-a-character-at-a-particular-index-in-javascript – kosa

答えて

3

使用正規表現

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

jsfiddle

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

+0

+1しかしIE 8以下では、 'str [i]'は 'str.charAt(i)'でなければなりません。 –

+0

@amnotiamはいあなたの権利...私は答えを修正しました。 –

2

あなたはjsFiddle 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) 

を使用することができます:あなたが使用することができhttp://jsfiddle.net/mVb4u/5

+0

あなたのフィドルの結果をもう一度見たいかもしれません。 'a.substr(i、4)+ 'X''または' a.substring(i、i + 4)+' X''を実行する必要があります。 –

+1

さて、私はそれを修正しました。 –

2

正規表現の解が良く見えますが、マップです。

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

ie8以下は 'map()'をサポートしていないことに注意してください。 –

+0

つまり、ほとんど何もサポートしていません:( – david

2

このアプローチでは、JavaScript 1.8にネイティブである、Array.reduceを使用していますが、backportedすることができます。

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

更新:を反映して更新されました私は年代以下のコメントをしていないです。

+0

'Array.prototype.reduce.call(" This is ...) ' –

+0

@amnotiamいいえ、私が書いたことを実際に意味していました。 [Array generics](https://developer.mozilla.org/en/New_in_JavaScript_1.6#Array_and_String_generics)は1.6以上で利用可能です – kojiro

+1

質問のリンクは 'Array .prototype.reduce'ではなく、 'Array.reduce'ではありません。ES以外の標準Mozillaエクステンションを参照していることに気をつけると良いでしょう。現在標準に近いのは[このストローマンの提案(http://wiki.ecmascript.org/doku.php?id=strawman:array_statics)。 –

関連する問題