2016-04-15 3 views
1

Ich habe eine Zeichenfolge "Good $ timeOfTheDay $, $ name $"Ersatz String mit Platzhalter Werte von JSON-Objekt kommenden

$ timeOfTheDay $ und $ name $ sind Platzhalter, deren Werte in einem JSON-Objekt enthalten ist.

var content = { "timeOfTheDay" : "evening", 
       "name" : "Jack", 
       "city" : "New York", 
       "age" : "25", 
       } 

Möchten Sie die Platzhalter in der Zeichenfolge durch die Werte aus dem JSON-Objekt ersetzen. Die resultierende Zeichenfolge wäre: "Guten Abend, Jack"

Möchten Sie dies in Javascript tun. Dies beinhaltet keine Interaktion mit dem DOM.

Ich vermute, die brutale Kraft, es zu tun wäre über das Schreiben von JS-Code, um die ersetzen zu tun, aber gibt es eine Bibliothek oder eine andere Möglichkeit, dies zu tun?

Schätzen Sie alle Ideen/Hilfe. Vielen Dank!

Antwort

1

Die erweiterte Lösung unter Verwendung von String.split, String.replace, Array.map und Array.join Funktionen:

var content = {"timeOfTheDay" : "evening", "name" : "Jack", "city" : "New York", "age" : "25"}, 
    str = "Good $timeOfTheDay$, $name$", replaced = ""; 

var parts = str.split(/(\$\w+?\$)/g).map(function(v) { 
    replaced = v.replace(/\$/g,""); 
    return content[replaced] || replaced; 
}); 

console.log(parts.join("")); // "Good evening, Jack" 

Weiteres Beispiel:

... 
str = "$name$ lives in $city$. He is $age$"; 
... 
console.log(parts.join("")); // "Jack lives in New York. He is 25" 
0

Gerade verwenden String.prototype.replace Funktion

var content = { "timeOfTheDay": "evening", "name": "Jack", "city": "New York", "age": "25", } 
 

 
var str = "Good $timeOfTheDay$, $name$" 
 

 
var result = str.replace('$timeOfTheDay$', content.timeOfTheDay) 
 
       .replace('$name$', content.name); 
 

 
document.write(result);

0

var content = { "timeOfTheDay" : "evening", 
 
       "name" : "Jack", 
 
       "city" : "New York", 
 
       "age" : "25", 
 
       } 
 
       
 
document.getElementById('greeting').placeholder = 'Good ' + content.timeOfTheDay + ', ' +content.name;
<input id='greeting'>

0

Diese Bibliothek kann zum Ersetzen Platzhalter nützlich sein. Dies könnte auch verwendet werden, um Platzhalter rekursiv zu ersetzen. https://github.com/tarangkhandelwal/substitutor.js

Ex:

nameJson = { "first": "John", "letzte": "Doe" }

var fullname = Substituierer ('Mein Name ist { erster} {last} ', NameJson);