Da wir das Rad auf etwas neu erfinden, das eine schöne Funktion in Javascript wäre.
ich benutze eval()
, was nicht sicher ist, aber Javascript ist nicht sicher. Ich gebe gerne zu, dass ich mit Javascript nicht besonders gut umgehen kann, aber ich hatte ein Bedürfnis, und ich brauchte eine Antwort, also habe ich eine gemacht.
Ich habe mich dafür entschieden, meine Variablen @
eher mit einem als mit einem zu stilisieren $
, insbesondere weil ich die mehrzeilige Funktion von Literalen verwenden möchte, ohne sie auszuwerten, bis sie fertig sind. Die variable Syntax ist also@{OptionalObject.OptionalObjectN.VARIABLE_NAME}
Ich bin kein Javascript-Experte, daher würde ich gerne Ratschläge zur Verbesserung erhalten, aber ...
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);
}
Es folgt eine sehr einfache Implementierung
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);
}
In meiner tatsächlichen Implementierung entscheide ich mich für die Verwendung @{{variable}}
. Noch ein Satz Zahnspangen. Es ist absurd unwahrscheinlich, dass dies unerwartet auftritt. Die Regex dafür würde aussehen/\@\{\{(.*?)(?!\@\{\{)\}\}/g
Um das Lesen zu erleichtern
\@\{\{ # 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.
Wenn Sie nicht mit Regex erlebt, eine ziemlich sichere Regel ist jede nicht-alphanumerischen Zeichen zu entkommen, und nicht immer unnötig Buchstaben entkommen so viele entkam Buchstaben besondere Bedeutung zu praktisch alle Varianten von regex haben.