So als Teil einer Web-App, ich versuche, bestimmte Sätze von Zeichen innerhalb meiner Markup und ersetzen sie durch andere Elemente wie erforderlich (dies konvertiert sie in Symbole und nicht in einfachen Text).Suchen und Ersetzen von Instanzen von "{Any-Integer}" mit JavaScript
$timeout(function() {
$('.collapsible').collapsible();
$(".manaCost:contains('{B}')").html(function (_, html) {
return html.replace(/{B}/g, "<i class=\"ms ms-b\"></i>");
});
$(".manaCost:contains('{R}')").html(function (_, html) {
return html.replace(/{R}/g, "<i class=\"ms ms-r\"></i>");
});
$(".manaCost:contains('{W}')").html(function (_, html) {
return html.replace(/{W}/g, "<i class=\"ms ms-w\"></i>");
});
$(".manaCost:contains('{G}')").html(function (_, html) {
return html.replace(/{G}/g, "<i class=\"ms ms-g\"></i>");
});
$(".manaCost:contains('{U}')").html(function (_, html) {
return html.replace(/{U}/g, "<i class=\"ms ms-u\"></i>");
});
$(".manaCost:contains('{ANY-INTEGER BETWEEN BRACES}')").html(function (_, html) {
return html.replace(/{ANY-INTEGER BETWEEN BRACES}/g, "<i class=\"ms ms-SAME-INTEGER\"></i>");
});
}, 0);
Alle diejenigen, die mit einem Buchstaben in ihnen (zum Beispiel '{B}} gut funktionieren, aber die ganze Zahl ist ein wenig komplizierter. Ich alle Instanzen einer ganzen Zahl finden müssen in Klammern, aber dann müssen auch die gleiche ganze Zahl der Klasse innerhalb des Ersatzelement anzuwenden. Wer weiß, wie ich über diese gehen würde?
Uh, '/ \ {(\ d) \}/g'? – adeneo
Oder Sie müssen die geschweiften Klammern, wenn Sie nach einem bestimmten ganzzahligen Wert suchen: '/ \ {1 \}/g'. Es kann auch sinnvoll sein, Ihre Logik so zu ändern, dass Sie einmal die Elemente ".manaCost" * auswählen und dann alle Elemente ersetzen. Es klingt seltsam, aber DOM-Zugriffe sind so viel langsamer als eine Regex, dass es wahrscheinlich viel schneller als Ihr aktuelles Muster wäre. –
Lesen Sie etwas über Reguläre Ausdrücke, es wird Ihnen helfen. – onetwo12