JavaScriptで複数行の文字列を作成する(JSでの文字列の折り返しの問題)

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)

おすすめ

転載: blog.csdn.net/SmallTeddy/article/details/108724873
おすすめ