34133

[code]

    var text = '11,222,3,4444';
    
[/code]

たとえば、この文字列の3回目に出現するカンマを*に置換したい場合どのようにすればよいでしょうか？

[code]

    // => '11,222,3*4444';
    
[/code]

カンマに限らず【】で囲まれた場合なども対応できるようにしたいです。

[code]

    // 2番目に出現する【】で囲まれた文字列を**に置換したい
    var text = 'あ【あ】いい【い】うえお';
    // => 'あ【あ】いい**うえお'
    
[/code]


CC BY-SA 3.0
2017-04-19T23:13:54.340
34132
2017-04-19T23:45:10.903
19687
question
javascript
JSでn回目に出現する文字だけ置換したい


[replace](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace)関数で置き換え文字列の代わりに関数を使用できますので、  
関数の呼び出し回数を数えて３回目呼び出しで実際に置き換えるようなことをすればいいです。  
例えば、以下のようにします。  
（【】で囲まれた場合とかも第一引数の正規表現を変えればいいかと思います。）

[code]

    var text = '11,222,3,4444';
    var n = 3;
    var result = text.replace(/,/g, function(match){ if(--n==0) return '*'; else return match; });
    console.log(result);
    
    text = 'あ【あ】いい【い】うえお';
    n = 2;
    result = text.replace(/【.+?】/g, function(match){ if(--n==0) return '**'; else return match; });
    console.log(result);
[/code]


CC BY-SA 3.0
2017-04-19T23:34:40.373
34133
2017-04-19T23:45:10.903
2017-04-19T23:45:10.903
5044
5044
34132
answer