在摘要中转义$字符


74

这些天,我发现自己正在做大量的jQuery,因此我开始将我所做的一些常见事情抽象成摘要。我期待与社区分享这些内容,但现在遇到了一个问题。

代码片段中的文字是通过在文字名称周围添加美元符号($)来定义的,以分隔要提供的值的位置。这很困难,因为jQuery使用美元符号来使用其许多功能。

代码段的转义序列是什么,因此我可以使用美元符号,并使代码段仍然起作用?


1
更多附带说明,但不要忘记,您可以使用jQuery代替$
Dan Heberden 2010年

注意:这个问题是关于Visual Studio的,而不是关于Visual Studio Code的。但是,这个特定的答案是关于后者的。
mklement0 '02

使用$$ item代替$ item
raskul

Answers:



70

这是Visual Studio Code的正确方法:\\$

这使得该$片段的文字部分而不是前缀构造的开始。 $


1
这不会弄乱VSC中的制表符。IE(如果使用该$$方法)VSC假定您要在这些位置上执行某些操作。
伊莱亚斯·兰茨

4
这应该是公认的答案。在$ variables之间切换时,当前接受的答案变得混乱。
狩猎

3
@hunt:这是Visual Studio Code的正确答案,而问题和公认的答案都是关于Visual Studio的
mklement0 '02

24

为Code元素定义了“定界符”属性。默认为$,但是您可以将其设置为其他字符,例如〜左右。

...

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

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

...


1
不知道为什么这不是可接受的答案。Delimiter是一个属性,它指定用于在代码中描述文字和对象的定界符,其确切目的是在$需要时替换。<Code Language="csharp" Delimiter="!"><![CDATA[Log.Debug(message: $"!end!");]]></Code>
mdisibio

8

尽管jQuery响应是有效的,但使用$表示法是一种更好的语法。

我找到了一个答案:将$字符设为默认值为$的文字。

<Literal Editable="true">

<ID>dollar</ID> <ToolTip>replace the dollar sign character</ToolTip> <Default>$</Default> <Function> </Function> </Literal>

1
我发现这在C#中适用于将“ $”用于Formattable字符串类型。
约瑟夫·摩根

我不确定添加示例是评论还是答案,因此由于篇幅有限,我在下面添加了示例。基于此答案。
约瑟夫·摩根

3

我将其用于C#中的formattable字符串。我用以上从例如科里-捕鸟逐字:

<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();

谢谢,可怜的鸟儿!


0

我发现上面的cory-fowler答案很有用,但感到沮丧的是,在VS 2019中执行C#代码段时预先选择了文字$ ...

具有Literal Editable = true的代码段

它也忽略了我的$ end $关键字...

<![CDATA[string Literal_edit_true = $dollar$"$end$";]]>

只需更改即可Editable=false解决问题,现在光标出现在$ end $处,可以输入...

具有Literal Editable = false的代码段

<Snippet>
    <Code Language="CSharp">
        <![CDATA[string Literal_edit_false = $dollar$"$end$";]]>
    </Code>
    <Declarations>
        <Literal Editable="false">
            <ID>dollar</ID>
            <ToolTip>Replace the dollar sign character</ToolTip>
            <Default>$</Default>
            <Function></Function>
        </Literal>
    </Declarations>
</Snippet>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.