gpt4 book ai didi

regex - 以特定的命名模式为所有类添加接口(interface)

转载 作者:行者123 更新时间:2023-12-01 12:25:27 24 4
gpt4 key购买 nike

我希望重构大量类。

所有类都遵循命名约定

class SomethingModel

我想把它们都找出来,替换成

class SomethingModel : IModel

但我也想排除一些我看起来像的模板派生

class SomethingController : GenController<SomethingModel>

我正尝试在 Visual Studio 中执行此操作。

显而易见的选择是正则表达式查找和替换,但我也有 Resharper,理想情况下我会使用模式搜索替换

通过对正则表达式问题的一些搜索,我得到了第一部分的工作

(?<=class)(.*Model)

但我似乎无法排除模板。我开始玩了

(class .*Model)(?!"(?<="Generic"))

我很少使用正则表达式,如果有非正则表达式的解决方案,我会更喜欢它。特别是我非常想将 Resharper Search 与 Pattern 一起使用

我尝试了以下内容: enter image description here效果很好....除了我所有的类都变成空的...语句标签似乎不起作用(设置为无限)

更新

正面案例:

  • 公共(public)类 DoorModel
  • 公共(public)类 HandleModel
  • 公共(public)类 BellModel

负面案例

  • 公共(public)类 DoorController : GenericController
  • 公共(public)类 WindowModel : IModel

最佳答案

如果您确实希望利用 Resharper,则有一个 hacky 解决方案。但这是一个 hack。

根据 Jetbrains 的说法,模式搜索和替换是为函数设计的,这就是为什么它不能很好地处理我上面的类示例(请参阅我的对话 here)

我所做的是打开所有我想编辑的文件,并进行查找替换以替换以让 resharper 忽略我的类内容。

我想要替换我的 resharper 模式,这样我就可以替换这个模式:

class $ClassName$ : IModel
{

}

这个

class $ClassName$ : AbstractModel<$ClassName$s>{}

所以我简单地做了一个查找替换,将“IModel”替换为“IModel{}//$$

然后运行 ​​resharper 模式替换,然后运行,因为它显然不再“看到”类的内容。

然后我将“>{}//$$”替换为“>”(因此出现了额外的疯狂符号)。

所以它非常 hacky,但它确实有效。值得庆幸的是,你很少想做这样疯狂的事情(而且通常应该不惜一切代价避免这样做)。实际上,我在处理这段代码时发现了其他一些“Resharper hacks”,稍后我可能不得不发布这些代码。

关于regex - 以特定的命名模式为所有类添加接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com