1

コード内の任意の場所で" < a > < ! [ CDATA[]]> </ a >.Value " を使用し、エクスポートして後でスニペットとしてインポートしようとすると、タグが含まれているため、VisualStudio はスニペットを認識できません。対立。

たとえば、この変数では次のタグを使用します。

Dim RegEx As New System.Text.RegularExpressions.Regex( _
<a><![CDATA[(http://|https://|www).*\.html?]]></a>.Value)

...だから私はそれを.Snippetファイルに入れることができますが、タグがスニペットファイルの他のタグと競合しているため、VSがスニペットファイルを認識できないため、使用できません。

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

どうすればこれを解決できますか?

PS: " < a > < ! [CDATA[ ]] > </ a >.Value "の代わりに二重引用符""を使用することは解決策ではありません

これはサンプル スニペットです。

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>
         Regex match htm html
      </Title>
      <Author>Elektro H@cker</Author>
      <Description>
         Expresión regular para encontrar urls.htm
      </Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>
      </Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>aaaaaaaaa</ID>
          <ToolTip>sfsdf</ToolTip>
          <Default>
          </Default>
          <Function>sdfsdf</Function>
        </Literal>
      </Declarations>
      <Code Language="vb"><![CDATA[

#Region " RegEx Match htm-html "

    ' [ RegEx Match htm-html Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Dim str As String = <a><![CDATA[href="http://www.mp3crank.com/the-rolling-stones/deluxe-edition.htm"]]></a>.Value
    ' MsgBox(RegEx_Match_htm_html(str)) ' Result: http://www.mp3crank.com/the-rolling-stones/deluxe-edition.htm

    Private Function RegEx_Match_htm_html(ByVal str As String, Optional ByVal Group As Int32 = 0) As String

        ' Match criteria:
        '
        ' http://text.htm
        ' http://text.html
        ' https://text.htm
        ' https://text.html
        ' www.text.htm
        ' www.text.html

        Dim RegEx As New System.Text.RegularExpressions.Regex( _
        <a><![CDATA[(http://|https://|www).*\.html?]]></a>.Value)

        Return RegEx.Match(Str).Groups(Group).ToString

    End Function

#End Region

]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>
4

1 に答える 1

3

CDATA 終了タグをリテラルにすることができます。これを試して:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>
         Regex match htm html
      </Title>
      <Author>Elektro H@cker</Author>
      <Description>
         Expresión regular para encontrar urls.htm
      </Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>
      </Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>aaaaaaaaa</ID>
          <ToolTip>sfsdf</ToolTip>
          <Default>
          </Default>
          <Function>sdfsdf</Function>
        </Literal>
        <Literal Editable="false">
          <ID>cdataend</ID>
          <ToolTip>Part of the CDATA end tag.</ToolTip>
          <Default>&gt;</Default>
        </Literal>
      </Declarations>
      <Code Language="vb"><![CDATA[

#Region " RegEx Match htm-html "

    ' [ RegEx Match htm-html Function ]
    '
    ' // By Elektro H@cker
    '
    ' Examples :
    ' Dim str As String = <a><![CDATA[href="http://www.mp3crank.com/the-rolling-stones/deluxe-edition.htm"]]$cdataend$</a>.Value
    ' MsgBox(RegEx_Match_htm_html(str)) ' Result: http://www.mp3crank.com/the-rolling-stones/deluxe-edition.htm

    Private Function RegEx_Match_htm_html(ByVal str As String, Optional ByVal Group As Int32 = 0) As String

        ' Match criteria:
        '
        ' http://text.htm
        ' http://text.html
        ' https://text.htm
        ' https://text.html
        ' www.text.htm
        ' www.text.html

        Dim RegEx As New System.Text.RegularExpressions.Regex( _
        <a><![CDATA[(http://|https://|www).*\.html?]]$cdataend$</a>.Value)

        Return RegEx.Match(Str).Groups(Group).ToString

    End Function

#End Region

]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

今すぐ動作するはずです。

于 2013-06-09T10:52:17.247 に答える