Ponieważ wymyślamy na nowo koło w czymś, co byłoby uroczą funkcją w javascript.
Używam eval()
, co nie jest bezpieczne, ale javascript nie jest bezpieczny. Chętnie przyznaję, że nie jestem doskonały z javascriptem, ale miałem potrzebę i potrzebowałem odpowiedzi, więc ją zrobiłem.
Zdecydowałem się stylizować moje zmienne na @
raczej niż an $
, szczególnie dlatego, że chcę używać funkcji multilinii w literałach bez oceniania, aż będzie gotowa. Tak więc składnia zmiennej to@{OptionalObject.OptionalObjectN.VARIABLE_NAME}
Nie jestem ekspertem od javascript, więc chętnie skorzystam z porad dotyczących ulepszeń, ale ...
var prsLiteral, prsRegex = /\@\{(.*?)(?!\@\{)\}/g
for(i = 0; i < myResultSet.length; i++) {
prsLiteral = rt.replace(prsRegex,function (match,varname) {
return eval(varname + "[" + i + "]");
// you could instead use return eval(varname) if you're not looping.
})
console.log(prsLiteral);
}
Następuje bardzo prosta implementacja
myResultSet = {totalrecords: 2,
Name: ["Bob", "Stephanie"],
Age: [37,22]};
rt = `My name is @{myResultSet.Name}, and I am @{myResultSet.Age}.`
var prsLiteral, prsRegex = /\@\{(.*?)(?!\@\{)\}/g
for(i = 0; i < myResultSet.totalrecords; i++) {
prsLiteral = rt.replace(prsRegex,function (match,varname) {
return eval(varname + "[" + i + "]");
// you could instead use return eval(varname) if you're not looping.
})
console.log(prsLiteral);
}
W mojej rzeczywistej realizacji decyduję się na użycie @{{variable}}
. Jeszcze jeden zestaw szelek. Absurdalnie mało prawdopodobne, aby spotkał się z tym niespodziewanie. Wyglądałoby to następująco/\@\{\{(.*?)(?!\@\{\{)\}\}/g
Aby było to łatwiejsze do odczytania
\@\{\{ # opening sequence, @{{ literally.
(.*?) # capturing the variable name
# ^ captures only until it reaches the closing sequence
(?! # negative lookahead, making sure the following
# ^ pattern is not found ahead of the current character
\@\{\{ # same as opening sequence, if you change that, change this
)
\}\} # closing sequence.
Jeśli nie masz doświadczenia z wyrażeniem regularnym, całkiem bezpieczną zasadą jest unikanie każdego znaku niealfanumerycznego i nie zawsze niepotrzebnie unikaj litery, ponieważ wiele takich znaków ma specjalne znaczenie dla praktycznie wszystkich odmian wyrażenia regularnego.