Interpolacja ciągów najwyraźniej nie przyniosła korzyści wymaganiom pierwotnego pytania, ponieważ wydaje się, że jest to przetwarzanie w czasie wykonywania dowolnych kluczy zastępczych.
Jeśli jednak musiałeś tylko wykonać interpolację ciągów, możesz użyć:
const str = `My name is ${replacements.name} and my age is ${replacements.age}.`
Zwróć uwagę na znaki odwrotne ograniczające ciąg, są one wymagane.
Aby uzyskać odpowiedź odpowiadającą wymaganiom konkretnego OP, możesz użyć String.prototype.replace()
do zamiany.
Poniższy kod obsłuży wszystkie dopasowania i nie zmieni tych bez zamiany (o ile wszystkie wartości zastępcze są ciągami, jeśli nie, patrz poniżej).
var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
str = 'My Name is %NAME% and my age is %AGE%.';
str = str.replace(/%\w+%/g, function(all) {
return replacements[all] || all;
});
jsFiddle .
Jeśli niektóre zamienniki nie są łańcuchami, upewnij się najpierw, że istnieją w obiekcie. Jeśli masz format taki jak na przykładzie, tj. Zawinięty w znaki procentu, możesz użyć in
operatora, aby to osiągnąć.
jsFiddle .
Jednakże, jeśli twój format nie ma specjalnego formatu, tj. Żadnego łańcucha, a obiekt zamienników nie ma null
prototypu, użyj Object.prototype.hasOwnProperty()
, chyba że możesz zagwarantować, że żaden z twoich potencjalnych zastępowanych podciągów nie będzie kolidował z nazwami właściwości w prototypie.
jsFiddle .
W przeciwnym razie, jeśli twój ciąg zastępujący był 'hasOwnProperty'
, otrzymasz wynikowy zepsuty ciąg.
jsFiddle .
Na marginesie, powinieneś nazywać replacements
sięObject
, a nie Array
.