我如何用剃刀助手批量替换 HTML (可能使用 resharper 按模式搜索)?

How can I replace HTML with a razor helper in bulk (possibly using resharper search by pattern)?

我在剃须刀页面上有一些重复的 HTML,我想用剃须刀助手替换它。我正在使用 resharper 2017,希望“按模式搜索”功能可以在这里节省我一些时间,但我不知道如何让它做我想做的事。我不确定我是否试图将它用于错误的目的,或者我是否只是使用不当。

这是我要替换的 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(或 visual studio)为我做这些?

我编写了以下模式供 resharper 搜索:

<li role="presentation" data-bind="visible: $inclusionVariable$">
    <a href="#$tabId$" role="tab" data-toggle="tab">$tabText$</a>
</li>

但我不知道如何设置占位符类型以匹配可能出现的任意文本。将它们设置为 Content Placeholder 后,它们无法正确匹配,但其他类型的 none 似乎是合适的。这可能吗(使用 resharper 或我不知道的 visual studio 功能)?

我不相信 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("", "", "")

这一切都取决于您的原始代码的规律性,但您可以修改搜索正则表达式以处理不规律性。