88

ES6テンプレート文字列を使用して作成した長い文字列がありますが、改行なしにしたい:

var string = `As all string substitutions in Template Strings are JavaScript
              expressions, we can substitute a lot more than variable names.
              For example, below we can use expression interpolation to 
              embed for some readable inline math:`

console.log(string);

結果:

As all string substitutions in Template Strings are JavaScript
expressions, we can substitute a lot more than variable names.
For example, below we can use expression interpolation to
embed for some readable inline math:

私の期待:

As all string substitutions in Template Strings are JavaScript expressions, we can substitute a lot more than variable names. For example, below we can use expression interpolation to embed for some readable inline math:
4

8 に答える 8

127

これは非常識です。

ここでのほぼすべての回答は、適切にフォーマットされ、ビルド時にフォーマットが不適切なテキストを作成するために関数ランタイムを実行することを提案していますoOその事実、特にパフォーマンスへの影響にショックを受けたのは私だけですか???

@dandavisが述べたように、公式の解決策(これはUNIXシェルスクリプトの歴史的な解決策でもあります)は、エスケープ文字を使用してキャリッジリターンをエスケープすることです:\

`foo \
bar` === 'foo bar'

プロセスがシンプルで、パフォーマンスが高く、公式で、読みやすく、シェルに似ている

于 2018-03-08T08:09:03.747 に答える
33

改行は改行です...手動で作成すると、実行時に取得されることが非常に期待できます。

ところで、今のところ 3 つの回避策があります。

  1. ワード ラップを行うように IDE またはコード エディターを構成します。これにより、必要がなければコードに改行を追加する必要がなくなります。各コード文が構成された最大値を超えると、エディターはコードを 2 行以上に分割します。文字。

  2. 次のコマンドで改行を削除しString.prototype.replaceます。

var string = `テンプレート文字列のすべての文字列置換は JavaScript であるため
式では、変数名よりもはるかに多くを置き換えることができます。
たとえば、次の式の補間を使用して、
読み取り可能なインライン数学を埋め込む:`.replace(/\n/gm,"");

注意: ここではビルド時のコードをフォーマットするために関数ランタイムを実行していますが、これはアンチパターンのように見え、パフォーマンスに影響を与える可能性があります

  1. 連結を使用してこれらのコードの改行を実行します。
var string = `テンプレート文字列のすべての文字列置換は JavaScript であるため`
              + `式、変数名よりもはるかに多くを置換できます。`
              + `たとえば、次のように式の補間を使用できます`
              + `読み取り可能なインライン数学を埋め込む:`;

私の場合、#1のオプションを使用します。

于 2016-06-23T19:58:59.383 に答える
13

個人的には、代わりに配列に参加する外観を好みます。

var string = [
  `As all string substitutions in Template Strings are JavaScript`,
  `expressions, we can substitute a lot more than variable names.`,
  `For example, below we can use expression interpolation to`,
  `embed for some readable inline math:`
].join(' ');
于 2016-06-24T01:43:36.407 に答える
0

ES6 では、ここで上位 2 つの回答を組み合わせて (\と組み合わせて.replace()) 使用することを好みます。置換関数をエスケープ文字と組み合わせることの利点は、コードブロックを残りのコードと一貫してフォーマットしたままにできることを意味します。

/\s{2}/g連続する 2 つ以上のスペースの任意のインスタンスを選択する正規表現です。

const myMessage = `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id urna \
    ligula. Suspendisse lobortis ex ut vestibulum venenatis. Donec imperdiet ante odio, \
    nec malesuada diam tristique eget. Lorem ipsum dolor sit amet, consectetur adipiscing \
    elit. Cras in vulputate tellus.`
  .replace(/\s{2,}/g, "");

これにより、プレーンで途切れのない文字列が出力されます。

「Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id urna ligula. Suspendisse lobortis ex ut vestibulum venenatis. Donec imperdiet ante odio, nec malesuada diam tristique eget. Lorem ipsum dolor sit amet, consectetur elit. Cras in vulputate tellus.」

于 2019-06-12T19:55:21.720 に答える