Escapar del carácter $ en fragmentos de código


Me encuentro haciendo un montón de jQuery en estos días, así que empecé a abstraer algunas de las cosas comunes que hago en fragmentos. Espero poder compartir estos con la comunidad, pero tengo un problema ahora.

Los literales en los fragmentos de código se definen agregando signos de dólar ($) alrededor del nombre del literal para delimitar hacia dónde irá el valor que desea proporcionar. Esto es difícil porque jQuery utiliza la notación de signo de dólar con el fin de utilizar una gran cantidad de su funcionalidad.

¿Cuál es la secuencia de escape para los fragmentos de código, por lo que puedo usar el signo de dólar y hacer que mis fragmentos sigan funcionando?

Author: Peter Mortensen, 2010-07-09

5 answers

Para tener un literal $ intenta duplicarlo: $$

 89
Author: Ahmad Mageed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-09 19:03:19

Este es el camino correcto: \\$.

VSC con el \\ interpreta que es un carácter más y no una comidina.

 29
Author: Jesus David Sanchez Suarez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-21 23:20:25

Hay un atributo "Delimiter" definido para un elemento de código. El valor predeterminado es ~ pero puedes configurarlo con un carácter diferente como ~ o algo así.

...

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

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

...

 18
Author: Dirk Seefeld,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-25 15:31:22

Aunque la respuesta de jQuery es válida, es una sintaxis más agradable usar la notación$.

He encontrado una respuesta: Convertir el carácter literal en un literal con un valor predeterminado de$.

<Literal Editable="true">

<ID>dollar</ID> <ToolTip>replace the dollar sign character</ToolTip> <Default>$</Default> <Function> </Function> </Literal>
 7
Author: cory-fowler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-21 23:15:42

Usé esto para una cadena formateable en C#. Usé el ejemplo anterior de cory-fowler textualmente:

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

Uso (los saltos de línea se agregan para mayor claridad en el desbordamiento de la pila, no en el original.):

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

Gracias, cory-fowler!

 1
Author: Joseph Morgan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:36