我在剃刀页面上有一些重复的HTML,我想用剃须刀助手替换它。我正在使用2017年的resharper,我希望按模式搜索功能可以节省一些时间,但我无法解决如何让它按照我的意愿行事。我不确定我是否试图将它用于错误的目的,或者我是否只是使用它。
这是我要替换的HTML的一小部分:
<li role="presentation" data-bind="visible: includeMtbf">
<a href="#mtbf-tab" role="tab" data-toggle="tab">Rolling and Monthly MTBF</a>
</li>
<li role="presentation" data-bind="visible: includeMtbfWithoutMonthly">
<a href="#rolling-mtbf-tab" role="tab" data-toggle="tab">Rolling MTBF</a>
</li>
<li role="presentation" data-bind="visible: includeMtbfByArea">
<a href="#mtbf-by-location-tab" role="tab" data-toggle="tab">Rolling MTBF by Location</a>
</li>
我写了下面的剃刀助手:
@helper BuildTab(string tabId, string inclusionVariable, string tabText)
{
<li role="presentation" data-bind="visible: @inclusionVariable">
<a href="#@tabId" role="tab" data-toggle="tab">@tabText</a>
</li>
}
现在我只需要调用帮助程序来替换原始HTML:
@BuildTab("mtbf-tab", "includeMtbf", "Rolling and Monthly MTBF")
@BuildTab("rolling-mtbf-tab", "includeMtbfWithoutMonthly", "Rolling MTBF")
@BuildTab("mtbf-by-location-tab", "includeMtbfByArea", "Rolling MTBF by Location")
为了澄清我想要实现的目标,我手动完成了它们,但有没有办法让resharper(或视觉工作室)为我做这个?
我已经为resharper编写了以下搜索模式:
<li role="presentation" data-bind="visible: $inclusionVariable$">
<a href="#$tabId$" role="tab" data-toggle="tab">$tabText$</a>
</li>
但我无法弄清楚如何设置占位符类型以匹配可能出现的任意文本。将它们设置为内容占位符后,它们无法正确匹配,但其他类型似乎都不合适。这是否可行(使用resharper或我不了解的视觉工作室功能)?
答案 0 :(得分:1)
我不相信resharper可以处理这个,但似乎是使用正则表达式在所有文件中查找和替换的情况。 像(未经测试)的东西: 找到模式
<li\s+role="presentation"\s+data-bind="visible:\s*(\w+)">\s*<a\s+href="#([\w\-]+)"\s+role="tab"\s+data-toggle="tab">([\w\s]+)</a>\s*</li>
替换模式
@BuildTab("$1", "$2", "$3")
所有这些都取决于您的原始代码的规则程度,但您可以修改搜索正则表达式以处理不规则性。