Экранирование символа $ в фрагментах - PullRequest
57 голосов
/ 09 июля 2010

В эти дни я выполняю тонну jQuery, поэтому я начал абстрагироваться от некоторых общих вещей, которые я делаю, во фрагменты кода. Я с нетерпением жду возможности поделиться этим с сообществом, но сейчас у меня возникла проблема.

Литералы во фрагментах определяются путем добавления знака доллара ($) вокруг имени литерала, чтобы отделить, куда пойдет значение, которое вы хотите указать. Это сложно, потому что jQuery использует обозначение знака доллара, чтобы использовать большую часть своих функций.

Какова последовательность перехода для фрагментов, поэтому я могу использовать знак доллара, и мои фрагменты все еще работают?

Ответы [ 5 ]

109 голосов
/ 09 июля 2010

Чтобы получить литерал $, попробуйте удвоить его: $$

39 голосов
/ 15 апреля 2017

Это правильный путь: \\$.

VSC с \\ интерпретирует, что это символ больше, а не комидин.

19 голосов
/ 25 февраля 2013

Для элемента Code определен атрибут «Разделитель». По умолчанию используется $, но вы можете установить для него другой символ, например ~ или около того.

...

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

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

...

7 голосов
/ 09 июля 2010

Хотя ответ jQuery действителен, лучше использовать синтаксис $.

Я нашел ответ: сделать символ $ литералом со значением по умолчанию $.

<Literal Editable="true">

<ID>dollar</ID> <ToolTip>replace the dollar sign character</ToolTip> <Default>$</Default> <Function> </Function> </Literal>
2 голосов
/ 01 июня 2016

Я использовал это для форматируемой строки в C #.Я использовал приведенный выше пример из cory-fowler дословно:

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

Использование (разрывы строк добавлены для ясности при переполнении стека, а не в оригинале.) :

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

Спасибо, Кори-Фаулер!

...