2016-07-20 16 views
1

in diesem Beispiel String '1,2,3,4,5' Ich versuche, das dritte Auftreten des Komma , CharakterErsetzen n-te Vorkommen javascript

dieser Code hier

'1,2,3,4,5'.match(/(?:[^,]*,){2}[^,]*(,)/) 

Streichhölzer 1,2,3 und das Komma im für suchen zu erfassen und ersetzen aber nicht sicher, wie man nur das Komma

ersetzt
'1,2,3,4,5'.replace(/(?:[^,]*,){2}[^,]*(,)/, "$") 

ersetzt alles vor 4$4,5

gibt Ich möge nur eine Zeichenfolge wie 1,2,3$4,5 zum Beispiel führt

ich diese Aufgabe auf zwei verschiedene Arten erreicht habe, mit Array-Split und in Scheiben schneiden und mit einem String # ersetzen, dass ein Rückruf

//splice 
let parts = []; 
let str = "1,2,3,4,5"; 
let formatted = ((parts = str.split(",")).slice(0,3)).join("-") + ' ' + parts.slice(3).join(":") 
​ 
//callback 
let str = "1,2,3,4,5"; 
str.replace(/,/g, (() => { 
    let count = 0; 
    return (match, position) => { 
    count += 1; 
    if(count == 3) return ' '; 
    else if(count < 3) return '-'; 
    else return ':';   
    }); 
})()) 
nimmt

Ist dies auch mit einem einfachen String#replace möglich?

Antwort

1

können Sie verwenden Gruppe zu erfassen und ersetzen durch erste Gruppe

.replace(/((?:[^,]*,){2}[^,]*),/g, "$1:"); 
     ^    ^

Die erfassten Gruppe der gefundenen String mit Ausnahme des dritten Komma erfassen wird, die $1 im Ersetzungsstring Fang.

console.log('1,2,3,4,5,2,3,4,5,2,3,4,5'.replace(/((?:[^,]*,){2}[^,]*),/g, "$1:"));