2016-12-05 12 views
7

ES6が導入されたtemplate stringsはバックティックで区切られている。`ストリング区切り文字をバッククォートに変更すると、影響がありますか?

この場合、バックスティックによって文字列を囲む単一の'またはダブル"の引用符が異なる結果になるか、それ以外は危険ですか?

コード内で既存のバックティックをエスケープする操作の一部として実行されます。

// before 
var message = "Display backtick ` on screen"; 

// after 
var message = `Display backtick \` on screen`; 

私はそれがプレースホルダとして解釈(MIS)であるように${...}を含む任意の文字列が失敗することを理解します。他の関連パターンはありますか?


コンテキスト:入力コードを自動的に処理するdevelopment of a JS compression toolです。後者とそれに含まれる文字列はユーザ​​が提供するものなので、その内容を制御することはできません。 1つの仮定は、有効なJavascriptであるということだけです。

実行環境は、最新のブラウザまたはNode.jsで行うことができます。

+0

このようなものはどうすればいいですか:var message = "こんにちは、私はマイクです、お会いできてうれしいです"。それは\ 'こんにちは、私は\ 'mのマイク、それは\'あなたに会いにいいですか? –

+0

@SariRahal OPは引用符*を文字列の前後に置き換えることについて尋ねました。 –

+3

検索と置換を行うことを考えるのではなく、コードを処理するためにパーサを使用することをお勧めしますか? http://esprima.org/には必要なすべての機能が必要です。 – Tomalak

答えて

2

string literalsno-substitution-templatesの文法を確認できます。
'"の特別な意味と既に言及した${の特別な意味を除いて、2つの形式の改行のみが異なります。とにかくあなたの細工者がそれらを取り除くので、行の継続( "エスケープされた改行")は無視できますが、普通の改行は文字列リテラル内ではなくテンプレート内で有効です。したがって、前後に変換すると、よく文字列リテラルに\nが含まれている場合は、それらを使用して別のバイトを保存することもできます。

関連する問題