Ist Javascript Literalzeichenfolgen haben?
-
23-09-2019 - |
Frage
In c # und Rubin und viele andere Sprachen können Sie eine Zeichenfolge bezeichnen, um nicht brauchen zu entkommen.
in c # its like this
string s = @"\whatever\this\is";
die Ergebnisse sind, wenn sie gedruckt
\whatever\this\is
Meine Frage ist, wird diese in irgendeiner Form in Javascript unterstützt?
Lösung
Kurze Antwort: Nein
Lange Antwort: Noooooooooooooooooooooooooo
Andere Tipps
Ich weiß nicht, was Sie bekommen auf, aber eine Möglichkeit, das Problem der Flucht zu umgehen (usw.) ist ein Trick, dass John Resig zu wie viel scheint. Sie umfassen <script>
Blöcke auf einer Seite, sondern geben ihnen eine „Art“ wie „text / plain“, um sicherzustellen, dass der Browser sich nicht an Javascript nicht übergeben. Verwenden Sie dann den Text des Skriptblock für was Sie wollen.
<script id='a_string' type='text/plain'>
Here is some stuff.
There might be some \escape sequences in it.
</script>
Dann können Sie mit $('#a_string').text()
greifen, dass (oder mit getElementById
wenn Sie nicht jQuery oder so ähnlich verwendet wird).
Bearbeiten Hier ist John Resig Erklärung darüber, warum, wie das Zeug in Script-Blöcke fallen ist eine gute Idee:
Quick-Tipp: Einbetten von Skripten in der Seite, die einen unbekannten Inhaltstyp hat (wie im vorliegenden Fall - der Browser nicht weiß, wie ein text / html Skript auszuführen) werden einfach vom Browser ignoriert - und Suche Motoren und Screenreadern. Es ist eine perfekte Tarnvorrichtung für Vorlagen in Ihrer Seite schleichen. Ich mag diese Technik für quick-and-dirty Fälle verwenden, wo ich brauche nur eine wenig Vorlage oder zwei auf der Seite und etwas Licht will und schnell.
auf dieser Seite genommen: http://ejohn.org/blog/javascript-micro -templating /
sind Literalzeichenfolgen durch die Verwendung von ES6 Sprachfunktionen zur Verfügung. Knoten v4.x jetzt dieses und rund 90% der anderen ES6 Ergänzungen unterstützt auch.
https://developer.mozilla.org/en- US / docs / Web / JavaScript / Reference / template_strings
In JS Stringliterale werden als Template Strings bekannt. Und die Syntax ist ziemlich geradlinig.
Just Flucht der Fluchten
var myCrazyString = "\\yes\\we\\have\\no\\bananas"
Ich weiß, dass es sechs Jahre spät, aber ich habe eine Lösung für dieses Problem bekam;)
function literalString(regex) {
return ('' + regex).slice(1, -1);
};
O.innerHTML = literalString(/\whatever\this\is/);
<pre id=O>
Sie im Grunde eine Regex Zeichenfolge konvertieren und entfernt die erste und letzte Zeichen.
Das wird funktionieren, solange Sie keine \x
in den String werfen Sie!
var str = String.raw`\whatever\this\is`;
console.log(str);