2016-12-29 5 views
4

Ich habe wenig oder keine Erfahrung mit Regex, und ich frage mich, wie Sie einen Abschnitt in einer Zeichenfolge durch Regex ersetzt ersetzen würde, wo der Index Teil des identifizierten Abschnitts ist?JS Zeichenfolge: Ersetzen durch Index in Regex

Hier ist mein Beispiel string:

let exampleStr = "How do I {0} the {n} with the {1} in my array?"; 

Das ist mein Datenarray ist:

let arr = ["replace", "items"]; 

Jetzt, mit ersetzen und regex, würde Ich mag den Index in der {#} Abschnitt entsprechen mit dem Array-Element, das dem Index entspricht.

Resultierende string:

let result = "How do I replace the {n} with the items in my array?"; 

Beachten Sie, wie würde es die {n} ignorieren, da es nicht einen numerischen Wert enthält.

Ich kann mit Array.indexOf, Number.isNaN dies tun, typeof etc, aber Regex scheint den „richtigen“ und sauberen Weg, um es zu tun, während ein bisschen schwerer zu lesen :)

Danke voraus.

+0

Warum brauchen Sie Ajax, wenn Sie die genauen Zeichenfolgen kennen, die Sie ersetzen möchten? – Dekel

+1

Als Programmierer mag ich wirklich eine generische Lösung. Aber generische Beispiele sind manchmal schwer zu verstehen und könnten den Leser verwirren. Während ich nach einer generischen Lösung suche, finde ich es angemessener, ein konkreteres Beispiel zu geben. –

Antwort

3

können Sie replace with a callback verwenden:

let exampleStr = "How do I {0} the {n} with the {1} in my array?"; 
 
let arr = ["replace", "items"]; 
 

 
let result = exampleStr.replace(/\{(\d+)\}/g, (g0, g1)=>arr[parseInt(g1,10)]); 
 
console.log(result);

Das Muster ist einfach - es eine Reihe in geschweiften Klammern übereinstimmt, und erfasst die Anzahl an Gruppennummer 1.
Die Callback-Funktion parst die Zahl (die nicht unbedingt erforderlich ist, aber arr["1"] ist nicht hübsch), und dann das richtige Element aus dem Array zurückgeben.
Der Rückruf könnte einige weitere Fehlerprüfung verwenden.

+0

@torazaburo - Sie haben Recht, aber das ist eine Stilwahl. '{' und '}' sind Metazeichen, und ich möchte ihnen normalerweise entkommen. Dies ist hier im Rahmen der Zahlen noch vertretbarer. '{\ d +}' könnte zu '{2}' werden, zum Beispiel in einem Test oder modifiziertem Code, was zu einem Syntaxfehler führt. – Kobi

Verwandte Themen