Visual Studio如何在Regex构造函数中语法突出显示字符串?

0qx6xfy6  于 2022-12-30  发布在  其他
关注(0)|答案(2)|浏览(123)

嗨,各位程序员和书呆子们!
创建正则表达式Visual Studio时,如果字符串前面带有逐字标识符(例如@"Some string),IDE将突出显示该字符串。

(注意字符串高亮显示的方式)我敢肯定,你们大多数人现在已经看过了。
我的问题是:我使用的是从NuGet获得的处理正则表达式的包,它们有一个接收正则表达式字符串的函数,但是它们的函数没有语法突出显示。

正如你所看到的,这使得阅读正则表达式字符串变得很痛苦,我的意思是,这并不太重要,但是如果我们能有视觉上有帮助的突出显示,以减少人们的大脑试图破译表达式所花费的时间和精力,这将是一个很大的不同,特别是在像我这样的情况下,将有相当数量的表达式。

    • 问题是**

所以我想知道的是,是否有一种方法可以使函数以这种方式突出显示字符串,或者它只是在IDE中针对Regex c-tor的特定情况而硬连接的东西,是否有某种注解可以附加到函数上,以最小的努力实现这一点,或者是否有必要使用某种扩展?

  • 我已经将对AddStyle()的调用封装到了我自己的函数中,并且字符串将作为参数传递,因此如果需要进行任何修改来实现语法高亮,可以对我的函数进行修改,因此AddStyle()函数来自外部库的事实应该是无关紧要的。

如果这是一个很大的工作,那么它不值得我的时间,别人是欢迎开发一个扩展来解决这个问题,但如果有一种方法...

    • 重要区别**

请记住,我说的是Visual Studio,* 而不是 * Visual Studio代码。
此外,如果有一种方法可以从Regex中提取原始表达式字符串,我可能会这样做,因为性能在这里不是一个大问题,因为这是一个一次性启动的事情,但是我 * 宁愿 * 不这样做,我实际上不需要Regex对象。

mepcadol

mepcadol1#

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

// language=regex
  var str = @"[A-Z]\d+;

MyMethod(/* language=regex */ @"[A-Z]\d+);

(the注解可能包含不止此language=regex部分)
第一个链接的博客谈到了预览,但这个功能也存在于最终产品中。

zengzsys

zengzsys2#

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

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

相关问题