Q
Rubyには次のコードがあります。このコードをJavaScriptに変換したいと思います。JSの同等のコードは何ですか?
text = <<"HERE"
This
Is
A
Multiline
String
HERE
A-1
ECMAScript 6(ES6)では、新しいタイプのリテラル、つまりテンプレートリテラルが導入されています。彼らは多くの機能、とりわけ変数補間を持っていますが、この質問にとって最も重要なのは、複数行になる可能性があることです。
ECMAScript 6(ES6)では、新しいタイプのテキスト、つまりが導入されました
模板文字
。変数補間を含む多くの機能がありますが、この問題で最も重要なことは、複数行にできることです。
テンプレートリテラルはバッククォートで区切られます:
テンプレートテキストはバッククォートで区切られています:
var html = `
<div>
<span>Some HTML here</span>
</div>
`;
(注:文字列でHTMLを使用することは推奨していません)
(注:文字列でHTMLを使用することは推奨しません)
A-2
最初の回答で述べたように、ES6 / Babelでは、バックティックを使用するだけで複数行の文字列を作成できます。
最初の回答で述べたように、ES6 / Babelでは、バックティックを使用するだけで複数行の文字列を作成できます。
const htmlString = `Say hello to
multi-line
strings!`;
変数の補間は、バックティック区切りの文字列に付属する人気のある新機能です。
補間変数は人気のある新機能で、文字列はバッククォートで区切られています。
const htmlString = `${
user.name} liked your post about strings`;
これは単に連結に移行します:
これは単に連結に変換されます。
user.name + ' liked your post about strings'
元のES5の回答:
ES5の元の答え:
GoogleのJavaScriptスタイルガイドでは、改行をエスケープする代わりに文字列連結を使用することを推奨しています。
Google的JavaScript样式指南
改行の代わりに文字列連結を使用することをお勧めします:
こんなことしないで:
こんなことしないで:
var myString = 'A rather long string of English text, an error message \
actually that just keeps going and going -- an error \
message to make the Energizer bunny blush (right through \
those Schwarzenegger shades)! Where was I? Oh yes, \
you\'ve got an error and all the extraneous whitespace is \
just gravy. Have a nice day.';
各行の先頭の空白は、コンパイル時に安全に取り除くことができません。スラッシュの後の空白は、トリッキーなエラーになります。ほとんどのスクリプトエンジンはこれをサポートしていますが、ECMAScriptの一部ではありません。
各行の先頭の空白は、コンパイル時に安全に取り除くことができません。スラッシュの後のスペースは、トリッキーなエラーの原因になります。ほとんどのスクリプトエンジンはこの機能をサポートしていますが、ECMAScriptの一部ではありません。
代わりに文字列連結を使用してください:
文字列連結を使用してください:
var myString = 'A rather long string of English text, an error message ' +
'actually that just keeps going and going -- an error ' +
'message to make the Energizer bunny blush (right through ' +
'those Schwarzenegger shades)! Where was I? Oh yes, ' +
'you\'ve got an error and all the extraneous whitespace is ' +
'just gravy. Have a nice day.';
A-3
このパターンtext = <<"HERE" This Is A Multiline String HERE
はjsでは使用できません(私は古き良きPerlの時代によく使用したことを覚えています)。
このモード
text = <<"HERE" This Is A Multiline String HERE
はjsでは使用できません(Perlでの楽しい時間にこのモードをよく使用したことを覚えています)。
複雑な、または長い複数行の文字列を監視するために、配列パターンを使用することがあります。
複雑または長い複数行の文字列を監視するために、配列モードが使用されることがあります。
var myString =
['<div id="someId">',
'some content<br />',
'<a href="#someRef">someRefTxt</a>',
'</div>'
].join('\n');
または、すでに示した匿名のパターン(改行をエスケープする)は、コード内の醜いブロックになる可能性があります。
または、表示されている匿名モード(改行文字)です。これは、コード内の醜いブロックである可能性があります。
var myString =
'<div id="someId"> \
some content<br /> \
<a href="#someRef">someRefTxt</a> \
</div>';
ここに別の奇妙だが機能する「トリック」があります:
これはもう1つの奇妙ですが効果的な「トリック」1です。
var myString = (function () {
/*
<div id="someId">
some content<br />
<a href="#someRef">someRefTxt</a>
</div>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];
ES20xxは、テンプレート文字列を使用して、複数行にわたる文字列のスパンをサポートしています。
ES20xxは、
模板字符串
複数の回線にまたがる使用をサポートしています字符串
。
let str = `This is a text
with multiple lines.
Escapes are interpreted,
\n is a newline.`;
let str = String.raw`This is a text
with multiple lines.
Escapes are not interpreted,
\n is not a newline.`;
1注:これは、コードを縮小/難読化すると失われます
1注:コードを縮小/難読化すると、これは失われます
A-4
141
私はマルチラインストリングのこの非常にジミーなリギング方法を思いつきました。関数を文字列に変換すると、関数内のコメントも返されるため、複数行コメント/ ** /を使用して、コメントを文字列として使用できます。あなたは端を切り落とす必要があり、あなたはあなたのひもを持っています。
この複数行の文字列の非常に不格好な操作を思いつきました。関数を文字列に変換すると、関数内のコメントも返されるため、複数行コメント/ ** /を使用して、コメントを文字列として使用できます。あなただけの端をトリミングする必要があります。
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)