web-dev-qa-db-ja.com

スニペットで$文字をエスケープする

私は最近、大量のjQueryを実行しているので、自分が行う一般的なことの一部をスニペットに抽象化し始めました。これらをコミュニティと共有することを楽しみにしていますが、現在、問題が発生しています。

スニペット内のリテラルは、リテラルの名前の周囲にドル記号($)を追加して、提供する値の行き先を区切ることによって定義されます。 jQueryはその機能の多くを使用するためにドル記号表記を使用するため、これは困難です。

スニペットのエスケープシーケンスとは何ですか。ドル記号を使用して、スニペットを引き続き機能させることができますか。

64
cory-fowler

リテラル$倍にしてみてください:$$

110
Ahmad Mageed

これは正しい方法です:\\$

[〜#〜] vsc [〜#〜]\\は、それがコミディンではなくキャラクターであると解釈します。

コード要素に定義された「区切り文字」属性があります。デフォルトは$ですが、〜などの別の文字に設定できます。

...

<Snippet>
<Code Language="JavaScript" Delimiter="~"><![CDATA[(function ($) {
    $(document).ready(function () {

    });
})(jQuery);]]></Code>
</Snippet>

...

19
Dirk Seefeld

JQuery応答は有効ですが、$表記を使用する方が構文が優れています。

私は答えを見つけました:$文字をデフォルト値$のリテラルにします。

<Literal Editable="true">

<ID>dollar</ID> <ToolTip>replace the dollar sign character</ToolTip> <Default>$</Default> <Function> </Function> </Literal>
7
cory-fowler

これをC#のフォーマット可能な文字列に使用しました。上記の cory-fowler の例をそのまま使用しました:

<Literal Editable="true">
    <ID>dollar</ID>
    <ToolTip>Replace the dollar sign character</ToolTip>
    <Default>$</Default>
    <Function></Function>
</Literal>

使用法(改行は元のスタックオーバーフローではなく、Stack Overflowで明確にするために追加されています。)

    string errMessage = $dollar$"Error occurred in
       {MethodBase.GetCurrentMethod().Module}, in procedure
       {MethodBase.GetCurrentMethod().Name}: {ex.Message}".ToString();

ありがとう、cory-fowler!

2
Joseph Morgan