2017-12-13 1 views
-3

Frage:mit mehreren Werten in string - Typoskript

var str = "I have a <animal>, a <flower>, and a <car>."; 

jetzt die obige Zeichenfolge Ich mag ersetzen unten mit Tigern, Rose und BMW

<animal> , <flower> and <car> 

Bitte legen nahe, den besten Ansatz für diesen.

Ich arbeite an Angular 2 Anwendung mit Typoskript.

+0

Mögliches Duplikat von [Wie alle Vorkommen einer Zeichenfolge in JavaScript ersetzen?] (Https: //stackoverflow.com/questions/1144783/how-to-replace-all-occurrrences-of-a-string-in-javascript) –

+0

@JoeClay normale Zeichenfolge ist ok .. aber ich habe Probleme für oder oder Zeichenfolge. – AmiDeveloper

+0

http://idownvotedbecau.se/noattempt – Sefe

Antwort

2

Sie können eine Regex mit einer Replacement-Funktion verwenden, um jede Übereinstimmung zu bewerten und den entsprechenden Ersatzwert zurückzugeben.

var str = "I have a <animal>, a <flower>, and a <car>."; 

function replace(source : string, replacements : { [name:string]: string }) { 
    return str.replace( new RegExp("<([A-z]*)>", "g"), (m) => { 
     return replacements[m.substring(1, m.length -1)]; 
    }); 
} 

console.log(replace(str, { 
    "animal" : "Tiger", 
    "flower" : "Rose", 
    "car" : "BMW" 
})) 
+0

Oder weniger wortreich, der Funktionskörper könnte einfach sein: 'return str.replace (/ <([A-z]*)>/g, m => Ersetzungen [mstring (1, m.length - 1) ]); ' – Duncan

+0

@Duncan du bist auf diese Weise recht kürzer, aber da es ein länglicher Ausdruck war, sah ich in einer Multilinie besser aus –

0

Wenn Sie Typoskript verwenden Sie die Zeichenfolge nach https://www.typescriptlang.org/docs/handbook/basic-types.html mit let str = 'I have a <animal>, a <flower>, and a <car>.'; Beachten Sie die einfachen Anführungszeichen, die eine Empfehlung des Angular Style Guide ist wie folgt zu entscheiden (erzwungen zum Beispiel mit Flusen ng in einer kontinuierlichen Lieferung Pipeline).

Statt mit dem gemeinsamen Javascript ersetzen Methoden ersetzen Sie den Platzhalter bereits im Code ersetzen können:

Screenshot code see the backticks here