2016-09-01 4 views
0

Ich möchte ein paar Strings und Variablen ersetzen, aber ich weiß nicht, wie man es machen - mein Code unten:JavaScript-Variable ersetzen Ausgabe

var text = "I was born in $city in country $country " 

var city = "New YORK" 
var country = "USA" 

var regex_variable = /\$\s*(.*?)\s/g; 
var variable =[]; 

while (c = regex_variable.exec(text)) { 
    variable.push(c[1]); 
} 

for (n=0;n<variable.length;n++){ 
    text = text.replace(regex_variable, "kat"); 
} 

console.log(text) 

Ausgabe von diesem Skript ist:

I was born in katin country kat 

Aber der Punkt ist, die kat durch die Zeichenfolgen von Variable city und country zu ersetzen. Bitte beachten Sie, dass einige Strings im Var-Text $ Zeichen als Präfix haben - diese Strings, die ich aus den Variablen nehmen möchte (Strings im Text sind die gleichen wie Namen von Variablen, aber mit Präfix $).

Das sollte korrekt ausgegeben werden:

I was born in New YORK in country USA 

mir jemand dabei helfen könnte?

+1

Sie können sich [JS-Vorlagenliterale] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals) ansehen. 'var city = 'New York', Land = 'USA', Text = \ 'Ich wurde in $ {city} im Land $ {country} \' geboren; ' –

+0

Der Punkt ist, dass ich $ city becase verwenden muss Dies ist nur ein Beispiel - ich werde diese Zeichenfolge aus der Datei mit Variablen wie $ city – artielegancko

+0

@RobM erhalten. Nett, aber nicht vollständig kompatibel. – Archer

Antwort

1

Was Sie versuchen zu bauen, ist ein kleines "Templating" -System. Wenn Sie danach suchen, finden Sie viele Dinge.

Hier ist ein echtes einfaches Beispiel:

var city = "New YORK"; 
 
var country = "USA"; 
 
var interpolations = {city, country}; 
 
var text = "I was born in $city in country $country"; 
 

 
var newString = text.replace(/\$(\w+)/g, (match, val) => interpolations[val]); 
 

 
console.log(newString);

+0

Danke - das, was ich gesucht habe;) – artielegancko

2

Sie tun es einfach so:

var text = "I was born in $city in country $country "; 

var city = "New YORK"; 
var country = "USA"; 

text = text.replace("$city", city); 
text = text.replace("$country", country); 

console.log(text) 
+0

Es ist ein einfacher Weg - Sie haben Recht: D aber Problem wird sein, wenn ich mehr als 100 dieser Variablen haben werde - um einen Ersatz für jede Variable zu machen :) – artielegancko

+0

Kennen Sie die Reihenfolge der Variablen, zum Beispiel $ Stadt kommt zuerst und $ Land ist die zweite und so weiter? – Huntro

0
var text = "I was born in $city in country $country " 

var city = "New YORK" 
var country = "USA" 

var replaceArray = [city,country]; //create an array with your variables 

var regex_variable = /\$\s*(.*?)\s/g; 
var variable =[]; 

while (c = regex_variable.exec(text)) { 
    variable.push(c[1]); 
} 

for (n=0;n<variable.length;n++){ 
    text = text.replace("$"+variable[n], replaceArray[n]); 
} 

console.log(text); 

Wenn Sie die Reihenfolge der Variablen kennen Sie ersetzen möchten, könnte dies Ihre Lösung sein.

0

var city = "NEW YORK"

var Land = "USA"

var text = „Ich war geboren in der stadt im land "

var res = text.replace (/ city/gi, Stadt);

var res1 = res.replace (/ country/gi, country);

document.write (res1);

+0

Dies ist eine feine Lösung, aber es ist nicht skalierbar für viele Variablennamen. –