Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#taghelper字符串替换_C#_Regex_Asp.net Core Mvc - Fatal编程技术网

C#taghelper字符串替换

C#taghelper字符串替换,c#,regex,asp.net-core-mvc,C#,Regex,Asp.net Core Mvc,我正在开发一个.net core taghelper,它将把简单的标记转换为我的移动和桌面菜单所需的标记,我需要一些帮助/复习,了解完成字符串操作的最佳方法是什么,因为我现在不幸生锈了。下面是起始标记示例 <topnav> <a asp-controller="Home" asp-action="Index">Home</a> <a asp-controller="Home" asp-action="Test1">Test1<

我正在开发一个.net core taghelper,它将把简单的标记转换为我的移动和桌面菜单所需的标记,我需要一些帮助/复习,了解完成字符串操作的最佳方法是什么,因为我现在不幸生锈了。下面是起始标记示例

<topnav>
    <a asp-controller="Home" asp-action="Index">Home</a>
    <a asp-controller="Home" asp-action="Test1">Test1</a>
    <a asp-controller="Home" asp-action="Test2">Test2</a>
    <div>
        <span>Nested Section</span>
        <a asp-controller="Home" asp-action="Test3">Test3</a>
        <a asp-controller="Home" asp-action="Test4">Test4</a>
    </div>
</topnav>

我已经构建了模板,只需要从原始topnav标记的内容完成字符串解析并适当地插入它。我还希望解决方案能够处理需要多个嵌套的菜单,例如

<topnav>
    <a asp-controller="Home" asp-action="Index">Home</a>
    <a asp-controller="Home" asp-action="Test1">Test1</a>
    <a asp-controller="Home" asp-action="Test2">Test2</a>
    <div>
        <span>Nested Section</span>
        <a asp-controller="Home" asp-action="Test3">Test3</a>
        <div>
            <span>Nested Section 2</span>
            <a asp-controller="Home" asp-action="Test5">Test5</a>
            <a asp-controller="Home" asp-action="Test6">Test6</a>
        </div>
        <a asp-controller="Home" asp-action="Test4">Test4</a>
    </div>
</topnav>

家
测试1
测试2
嵌套截面
测试3
嵌套第2节
测试5
测试6
测试4
我认为regex是一个不错的选择,但我想在走错方向之前收集一些意见。如果需要的话,也可以添加到原始标记中,但我要求它尽可能小。请提供例子


谢谢

在考虑正则表达式之前,我会考虑使用XML解析器。我认为远离XML是最好的选择,因为它或多或少已经从.NETCore中完全删除了?我特别要求提供.net core taghelper的最佳实践,那么可能是.net core的Html Agility Pack?我在查看对HTMLAgilityPack的引用时发现,System.Xml.Linq.XDocument是您在第一条评论中指导我的吗?它似乎是最容易使用的。
<a asp-controller="Home" asp-action="Test3">Test3</a>
<a asp-controller="Home" asp-action="Test4">Test4</a>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div class='accordion'>
    <div class='title'>
        <span>Nested Section</span>
        <i class='icon'></i>
    </div>
    <div class='content'>
        <a asp-controller="Home" asp-action="Test3">Test3</a>
        <a asp-controller="Home" asp-action="Test4">Test4</a>
    </div>
</div>
<a asp-controller="Home" asp-action="Index">Home</a>
<a asp-controller="Home" asp-action="Test1">Test1</a>
<a asp-controller="Home" asp-action="Test2">Test2</a>
<div class='dropdown'>
    <span>Nested Section</span>
    <i class='icon'></i>
    <div class='menu'>
        <a asp-controller="Home" asp-action="Test3">Test3</a>
        <a asp-controller="Home" asp-action="Test4">Test4</a>
    </div>
</div>
<nav class='sidebar menu'>
    <a asp-controller="Home" asp-action="Index">Home</a>
    <a asp-controller="Home" asp-action="Test1">Test1</a>
    <a asp-controller="Home" asp-action="Test2">Test2</a>
    <div class='accordion'>
        <div class='title'>
            <span>Nested Section</span>
            <i class='icon'></i>
        </div>
        <div class='content'>
            <a asp-controller="Home" asp-action="Test3">Test3</a>
            <a asp-controller="Home" asp-action="Test4">Test4</a>
        </div>
    </div>
</nav>

<section class='top menu'>
    <nav class='computer'>
        <a href="#"><img alt="logo"/></a>
        <a asp-controller="Home" asp-action="Index">Home</a>
        <a asp-controller="Home" asp-action="Test1">Test1</a>
        <a asp-controller="Home" asp-action="Test2">Test2</a>
        <div class='dropdown'>
            <span>Nested Section</span>
            <i class='icon'></i>
            <div class='menu'>
                <a asp-controller="Home" asp-action="Test3">Test3</a>
                <a asp-controller="Home" asp-action="Test4">Test4</a>
            </div>
        </div>
    </nav>
    <div class='mobile'>
        <a href="#"><img alt="logo"/></a>
        <a href='#'><i class='sidebar icon'></i></a>
    </div>
</section>
<topnav>
    <a asp-controller="Home" asp-action="Index">Home</a>
    <a asp-controller="Home" asp-action="Test1">Test1</a>
    <a asp-controller="Home" asp-action="Test2">Test2</a>
    <div>
        <span>Nested Section</span>
        <a asp-controller="Home" asp-action="Test3">Test3</a>
        <div>
            <span>Nested Section 2</span>
            <a asp-controller="Home" asp-action="Test5">Test5</a>
            <a asp-controller="Home" asp-action="Test6">Test6</a>
        </div>
        <a asp-controller="Home" asp-action="Test4">Test4</a>
    </div>
</topnav>