56

C#Ruby 、およびその他の多くの言語では、文字列をエスケープする必要がないことを示すことができます。C#ではこんな感じ

string s = @"\whatever\this\is";

印刷時の結果は次のとおりです。

\whatever\this\is

これは JavaScript のどの形式でもサポートされていますか?

4

6 に答える 6

159

短い答え: いいえ

長い答え: Nooooooooooooooooooooo

于 2010-03-31T14:26:52.790 に答える
23

何を言っているのかわかりませんが、エスケープの問題などを回避する 1 つの方法は、John Resig がとても気に入っているように見えるトリックを使用することです。ページにブロックを含め<script>ますが、「text/plain」などの「タイプ」を指定して、ブラウザーがブロックを Javascript に渡さないようにします。次に、スクリプト ブロックのテキストを好きなように使用します。

<script id='a_string' type='text/plain'>
  Here is some stuff.
  There might be some \escape sequences in it.
</script>

次に、それをつかむことができます$('#a_string').text()getElementByIdjQueryなどを使用していない場合は)。

編集:これは、なぜそのようなスクリプトブロックに何かをドロップすることが良い考えであるかについてのJohn Resigの説明です:

簡単なヒント: コンテンツ タイプが不明なスクリプトをページに埋め込んでも (この例では、ブラウザは text/html スクリプトの実行方法を認識していません)、ブラウザや検索エンジンやスクリーン リーダーによって単純に無視されます。 . これは、テンプレートをページに忍び込ませるための完璧なクローキング デバイスです。この手法は、ページに小さなテンプレートが 1 つか 2 つだけ必要で、軽量で高速なものが必要な場合に好んで使用します。

このページから引用: http://ejohn.org/blog/javascript-micro-templating/

于 2010-03-31T14:34:39.563 に答える
3

これは、文字列に a を投げない限り機能します\x!

var str = String.raw`\whatever\this\is`;

console.log(str);

于 2016-08-22T13:53:00.967 に答える
2

逃げるだけで逃げる

var myCrazyString = "\\yes\\we\\have\\no\\bananas"
于 2010-03-31T16:14:25.057 に答える
1

私はこれに対する1つの解決策を持っています;)

function literalString(regex) {
    return ('' + regex).slice(1, -1);
};

O.innerHTML = literalString(/\whatever\this\is/);
<pre id=O>

基本的に、正規表現を文字列に変換し、最初と最後の文字を削除します。

于 2016-04-08T19:50:59.683 に答える