【问题标题】:How does Visual Studio syntax-highlight strings in the Regex constructor?Visual Studio 如何在 Regex 构造函数中语法高亮字符串?
【发布时间】:2020-08-28 19:19:54
【问题描述】:

各位程序员和书呆子们好!

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

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

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

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

问题

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

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

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

重要区别

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

另外,如果有办法从正则表达式中提取原始表达式字符串,我可能会这样做,因为这里的性能不是一个大问题,因为这是一次启动的事情,但是我会宁愿不要那样做。我实际上并不需要 Regex 对象。

【问题讨论】:

  • 看来你可以用特殊注释标记字符串以获得语法高亮:devblogs.microsoft.com/dotnet/…
  • 啊哈,太好了,谢谢,很好的发现!这可以通过在将注释传递给函数时将注释放在字符串上方来工作,但在将字符串作为参数放置在函数上方时则不行。就我的目的而言,这很好。
  • 请将此作为答案发布,我愿意接受它作为解决方案。我还忽略了这样一个事实,即这似乎是 Visual Studio 的预览功能,将来可能会得到进一步的发展。希望他们可以让它支持带有字符串输入的函数,或者允许注释只用于指定数量的行,而不是将注释放在每行上方,但是我可以忍受它,因为我需要注释什么每个表达式都是无论如何,你可以在 'language=regex' 部分之后写任何东西。
  • 完成,见下文

标签: c# visual-studio syntax-highlighting


【解决方案1】:

根据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+;

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

(评论可能包含的不仅仅是这个language=regex部分)

第一个链接的博客谈到了预览,但这个功能也出现在最终产品中。

【讨论】:

  • 有没有办法告诉 ide 方法参数是正则表达式模式?
  • 调用方法时:是的(只需按说明添加注释)。我不知道可以在声明中使用的任何属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
相关资源
最近更新 更多