Ich habe den folgenden Code in Ruby. Ich möchte diesen Code in JavaScript umwandeln. Was ist der entsprechende Code in JS?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
Ich habe den folgenden Code in Ruby. Ich möchte diesen Code in JavaScript umwandeln. Was ist der entsprechende Code in JS?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
Ich kam mit dieser sehr jimmy rigged Methode eines mehrzeiligen String. Da bei der Umwandlung einer Funktion in eine Zeichenkette auch alle Kommentare innerhalb der Funktion zurückgegeben werden, können Sie die Kommentare als Zeichenkette mit einem mehrzeiligen Kommentar /**/ verwenden. Man muss nur die Enden abschneiden und schon hat man seine Zeichenkette.
var myString = function(){/*
This is some
awesome multi-lined
string using a comment
inside a function
returned as a string.
Enjoy the jimmy rigged code.
*/}.toString().slice(14,-3)
alert(myString)
Das ist absolut erschreckend. Ich liebe es (obwohl Sie vielleicht eine Regex-Übereinstimmung machen müssen, weil ich nicht sicher bin, wie genau die Leerzeichen für toString()
ist.
Diese Lösung scheint in Firefox nicht zu funktionieren, vielleicht ist es eine Sicherheitsfunktion des Browsers? EDIT: Vergessen Sie es, es funktioniert nur nicht für Firefox Version 16.
Ich bin überrascht, dass ich das nicht gesehen habe, denn es funktioniert überall, wo ich es getestet habe, und ist z. B. für Vorlagen sehr nützlich:
<script type="bogus" id="multi">
My
multiline
string
</script>
<script>
alert($('#multi').html());
</script>
Kennt jemand eine Umgebung, in der HTML vorhanden ist, aber nicht funktioniert?
Überall dort, wo Sie Ihre Zeichenketten nicht in separaten und weit entfernten Skriptelementen unterbringen wollen.
Ein berechtigter Einwand! Er ist nicht perfekt. Aber für Vorlagen ist diese Trennung nicht nur in Ordnung, sondern vielleicht sogar erwünscht.
Ich ziehe es vor, alles, was über 80/120 Zeichen hinausgeht, in mehrzeilige Texte aufzuteilen, ich fürchte, das ist mehr als nur eine Vorlage. Ich bevorzuge jetzt die Syntax 'Zeile1' + 'Zeile2'. Sie ist auch am schnellsten (obwohl sie bei wirklich großen Texten durchaus konkurrenzfähig ist). Aber es ist ein netter Trick.
Ich löste dies durch die Ausgabe eines div, so dass es versteckt, und rufen Sie die div id von jQuery, wenn ich es brauchte.
z.B..
<div id="UniqueID" style="display:none;">
Strings
On
Multiple
Lines
Here
</div>
Dann, wenn ich brauche, um die Zeichenfolge zu erhalten, verwende ich einfach die folgende jQuery:
$('#UniqueID').html();
Das gibt meinen Text in mehreren Zeilen wieder. Wenn ich aufrufe
alert($('#UniqueID').html());
Ich verstehe:
Vielen Dank dafür! Es ist die einzige Antwort, die ich gefunden habe, die mein Problem löst, die unbekannte Zeichenfolgen beinhaltet, die eine beliebige Kombination von einfachen und doppelten Anführungszeichen enthalten können, die direkt in den Code eingefügt werden, ohne die Möglichkeit der Vorcodierung. (es kommt aus einer Templating-Sprache, die die JS erstellt - immer noch aus einer vertrauenswürdigen Quelle und nicht eine Formularübermittlung, so dass es nicht TOTAL dement ist).
Dies war die einzige Methode, die tatsächlich für mich gearbeitet, um eine mehrzeilige Javascript-String-Variable aus einem Java-String zu erstellen.
Dies bekommt die Arbeit für mich getan, obwohl es nicht lösen mehrzeilige String-Werte Zuordnung zu Javascript-Variablen
Es gibt mehrere Möglichkeiten, dies zu erreichen
1. Schrägstrich-Verkettung
var MultiLine= '1\
2\
3\
4\
5\
6\
7\
8\
9';
2. reguläre Verkettung
var MultiLine = '1'
+'2'
+'3'
+'4'
+'5';
3. Array Join-Verkettung
var MultiLine = [
'1',
'2',
'3',
'4',
'5'
].join('');
Leistungstechnisch, Schrägstrich-Verkettung (die erste) ist die schnellste.
Siehe dieser Testfall für weitere Informationen über die Leistung
Aktualisierung:
Mit dem ES2015 können wir die Vorteile der Funktion Vorlagenzeichenfolgen nutzen. Damit müssen wir nur Back-Ticks verwenden, um mehrzeilige Zeichenketten zu erstellen
Ejemplo:
`<h1>{{title}}</h1>
<h2>{{hero.name}} details!</h2>
<div><label>id: </label>{{hero.id}}</div>
<div><label>name: </label>{{hero.name}}</div>
`
Skript-Tags verwenden:
<script>...</script>
Block mit Ihrem mehrzeiligen Text in head
Tag;Ihren mehrzeiligen Text so erhalten, wie er ist... (achten Sie auf die Textkodierung: UTF-8, ASCII)
<script>
// pure javascript
var text = document.getElementById("mySoapMessage").innerHTML ;
// using JQuery's document ready for safety
$(document).ready(function() {
var text = $("#mySoapMessage").html();
});
</script>
<script id="mySoapMessage" type="text/plain">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="...">
<soapenv:Header/>
<soapenv:Body>
<typ:getConvocadosElement>
...
</typ:getConvocadosElement>
</soapenv:Body>
</soapenv:Envelope>
<!-- this comment will be present on your string -->
//uh-oh, javascript comments... SOAP request will fail
</script>
Ich denke, diese Strategie ist sauber und wird viel zu wenig genutzt. jsrender verwendet sie.
Ich bin mit dieser mit innerText iso innerHTML, aber wie stelle ich sicher, dass die Leerzeichen erhalten bleiben?
Auch Ajax-Abfragen, falls Sie diese verwenden. Sie können versuchen, Ihre Kopfzeilen zu ändern xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Ich kann mich nicht erinnern, dass ich andere Probleme als Tippfehler bei Kommentaren in JS hatte. Leerzeichen waren kein Problem.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.