Visual Studio 如何在 Regex 构造函数中对字符串进行语法高亮显示?

Log*_*gix 4 c# syntax-highlighting visual-studio

嗨,程序员和书呆子们!

创建正则表达式 Visual Studio 时,如果字符串前面有逐字标识符(例如,@"Some string),IDE 将突出显示该字符串。这看起来像这样:

突出显示的屏幕截图

(注意字符串突出显示的方式)。我敢肯定,你们中的大多数人现在都已经看到了。

我的问题:我正在使用从 NuGet 获取的处理正则表达式的包,它们有一个接收正则表达式字符串的函数,但是它们的函数没有语法高亮显示。

没有突出显示的功能

如您所见,这只会让阅读 Regex 字符串变得很痛苦。我的意思是,这不是太重要,但如果我们可以通过视觉上有用的突出显示来减少大脑试图破译表达的时间和精力,这会有所作为,尤其是在像我这样的情况下将是相当数量的这些表达。

问题

所以我想知道的是,有没有办法让函数以这种方式突出显示字符串*,或者它只是针对正则表达式 c-tor 的特定情况硬连线到 IDE 中的东西?是否有某种注释可以添加到函数上以最少的努力实现这一点,或者是否有必要使用某种扩展?

*AddStyle()无论如何,我已将调用包装到我自己的一个函数中,并且该字符串将作为参数传递,因此如果需要进行任何修改以实现语法突出显示,可以对我的函数进行修改。因此,该AddStyle()函数来自外部库的事实应该无关紧要。

如果工作量很大,那么不值得我花时间,欢迎其他人开发扩展来解决这个问题,但如果有办法......

重要区别

请记住我说的是 Visual Studio,而不是Visual Studio Code。

此外,如果是拉从正则表达式的原始表达式串的方式,我可以做这样的说法,因为业绩是不是在这里,因为这一个巨大的关注是一次上启动的事情,但是我会更喜欢不这样做。我实际上并不需要 Regex 对象。

Pet*_*esz 19

.NET 7 引入了新[StringSyntax(...)]属性,该属性在 .NET 7 中用于超过 350 个stringstring[]、 以及ReadOnlySpan<char>参数、属性和字段,以向感兴趣的工具突出显示预期传递或设置哪种语法。 https://devblogs.microsoft.com/dotnet/regular-expression-improvements-in-dotnet-7/?WT_mc_id=dotnet-35129-website&hmsr=joyk.com&utm_source=joyk.com&utm_medium=referral

因此,对于方法参数,您应该使用:

void MyMethod([StringSyntax(StringSyntaxAttribute.Regex)] string regex);
Run Code Online (Sandbox Code Playgroud)

这是演示该功能的视频:https://youtu.be/Y2YOaqSAJAQ


Kla*_*ter 12

根据https://devblogs.microsoft.com/dotnet/visual-studio-2019-net-productivity/#regex-language-supporthttps://www.meziantou.net/visual-studio-tips-and-tricks -regex-editing.htm您可以使用特殊注释标记字符串以突出显示语法:

  // language=regex
  var str = @"[A-Z]\d+;
Run Code Online (Sandbox Code Playgroud)

或者

  MyMethod(/* language=regex */ @"[A-Z]\d+);
Run Code Online (Sandbox Code Playgroud)

(评论可能不仅仅包含这language=regex部分内容)

第一个链接的博客谈论预览,但此功能也存在于最终产品中。