2016-12-30 1 views
-1

Ich versuche, alle diese Strings zu ersetzen:{{etwas}} in mehrere Strings mit Variablen

'Apples are {{appleColor}}' 
'Oranges are {{orangeColor}}' 
'My name is {{name}}' 

Mit diesen:

obj = { 
    appleColor: 'red', 
    orangeColor: 'orange', 
    name: 'Todd' 
} 

Vielen Dank im Voraus!

+0

Sie können dies tun, ist den meisten Browsern heute mit Vorlage Strings in einfachen JS mit '$ {}' – elclanrs

+2

Du versuchst es? Also, was hast du probiert? ODER meinst du, du willst? – NewToJS

+0

mustache.js tut genau diese Sache und mehr – dandavis

Antwort

4

Einfache Lösung String.prototype.replace() Funktion mit Ersatz Rückruf mit:

var str = "'Apples are {{appleColor}}', 'Oranges are {{orangeColor}}', 'My name is {{name}}' ", 
 
    obj = { 
 
     appleColor: 'red', 
 
     orangeColor: 'orange', 
 
     name: 'Todd' 
 
    }; 
 

 
str = str.replace(/{{(\w+)}}/g, function (m, m1) { 
 
    return obj[m1] || m; 
 
}); 
 

 
console.log(str);

+0

gibt es ein paar Vorbehalte erwähnenswert mit diesem Ansatz; Fehlerbehandlung zeigt Datennamen, "toString" et al Konflikte, Nest Snafu, nur wortreichen Schlüsselnamen (keine '_' oder '' ''' '' ''), keine Objektpfadtiefe, etc. – dandavis

+1

@dandavis, Wie ich schrieb * Einfache Lösung * ... für einfache Fälle) – RomanPerekhrest

+0

es ist eine gute Antwort, ich verkaufe nur 'mustache.js';) – dandavis