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
Eine einfache Möglichkeit, mehrzeilige Strings in JavaScript zu drucken, ist die Verwendung von Template-Literalen (Template-Strings), die durch Backticks (` `) gekennzeichnet sind. Sie können auch Variablen innerhalb eines Template-Strings verwenden (` name is ${value}
`)
Sie können auch
const value = `multiline`
const text = `This is a
${value}
string in js`;
console.log(text);
Ich verwende diese Methode, mit dem Unterschied, dass ich das "+" an das Ende der vorangehenden Zeile setze, um deutlich zu machen, dass die Anweisung in der nächsten Zeile fortgesetzt wird. Bei Ihnen sind die Einzüge jedoch gleichmäßiger.
@Sean ich benutze das auch, und ich ziehe es immer noch vor, das '+' an den Anfang jeder neuen Zeile zu setzen, und das abschließende ';' in eine neue Zeile, weil ich das 'korrekter' finde.
Wenn man das + an den Anfang setzt, kann man diese Zeile auskommentieren, ohne andere Zeilen bearbeiten zu müssen, wenn es sich um die erste/letzte Zeile der Sequenz handelt.
Abwärtswähler : Dieser Code wird nur zur Information angegeben.
Dies wurde in Fx 19 und Chrome 24 auf Mac getestet
var new_comment; /*<<<EOF
<li class="photobooth-comment">
<span class="username">
<a href="#">You</a>:
</span>
<span class="comment-text">
$text
</span>
@<span class="comment-time">
2d
</span> ago
</li>
EOF*/
// note the script tag here is hardcoded as the FIRST tag
new_comment=document.currentScript.innerHTML.split("EOF")[1];
document.querySelector("ul").innerHTML=new_comment.replace('$text','This is a dynamically created text');
<ul></ul>
Das ist furchtbar. +1. Und Sie können verwenden document.currentScript anstelle von getElement...
Aber es war eine einzigartige Antwort. Ich schreibe tatsächlich ein Polyfill jetzt, aber vor allem, weil jsfiddle lädt Ihr Skript inline. Ich möchte die *Interpolation zu codieren - (Verzicht auf #{}, weil ES7 ${this.var} verordnet.
Es gibt diese Bibliothek, die sie schön macht:
https://github.com/sindresorhus/multiline
var str = '' +
'<!doctype html>' +
'<html>' +
' <body>' +
' <h1> unicorns</h1>' +
' </body>' +
'</html>' +
'';
var str = multiline(function(){/*
<!doctype html>
<html>
<body>
<h1> unicorns</h1>
</body>
</html>
*/});
Laut @HueiTan Docs funktioniert es auch im Browser. Was Sinn macht - es ist nur Function.prototype.String()
.
Ya, aber es sagte "Während es funktioniert gut in den Browser, es ist vor allem für den Einsatz in Node.js gedacht. Während es im Browser gut funktioniert, ist es hauptsächlich für die Verwendung in Node.js gedacht. Benutzung auf eigene Gefahr." (Sei einfach vorsichtig XD)
Ich habe hier eine Menge überkonstruierter Antworten gefunden. Die zwei besten Antworten waren meiner Meinung nach:
1:
let str = `Multiline string.
foo.
bar.`
die schließlich protokolliert wird:
Multiline string.
foo.
bar.
2:
let str = `Multiline string.
foo.
bar.`
Das protokolliert es korrekt, aber es ist hässlich in der Skriptdatei, wenn str innerhalb von Funktionen / Objekten usw. verschachtelt ist...:
Multiline string.
foo.
bar.
Meine wirklich einfache Antwort mit regex, die den str korrekt protokolliert:
let str = `Multiline string.
foo.
bar.`.replace(/\n +/g, '\n');
Bitte beachten Sie, dass dies nicht die perfekte Lösung ist, aber es funktioniert, wenn Sie sicher sind, dass nach der neuen Zeile ( \n ) kommt mindestens ein Leerzeichen (+ bedeutet mindestens ein Vorkommen). Es funktioniert auch mit * (null oder mehr).
Sie können auch expliziter sein und {n,} verwenden, was mindestens n Vorkommen bedeutet.
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.