【问题标题】:Use FInd/Replace to re-order attributes in Visual Studio在 Visual Studio 中使用 FInd/Replace 重新排序属性
【发布时间】:2015-04-13 08:47:03
【问题描述】:

在旧的 webforms 应用程序的数百个页面中,有 GridViews 在 HTML 中声明为

<asp:GridView GridLines="None" ..... >

其中每个 GridView 标记都以&lt;asp:GridView GridLines="None" 开头

这是在黑暗中拍摄的,但我想知道是否可以在搜索和替换中使用 RegEx 将 GridLines 属性移动到标记的末尾?例如,

<asp:GridView GridLines="None" .....>

会变成

<asp:GridView ..... GridLines="None">

..... 表示可以存在的许多其他属性,它们没有按任何特定顺序声明。

更新

一些 GridView 控件使用资源文件数据来允许多语言输出。这个标签被破坏了,那么 RegEx 可以解决这个问题吗?

<asp:GridView GridLines="None" ..... EmptyDataText="<%$ Resources: Reports, NoResultsFound %>" .....>

【问题讨论】:

    标签: asp.net regex visual-studio visual-studio-2012 attributes


    【解决方案1】:

    是的,你可以。解决&gt;&lt;不能序列化的问题,可以使用

      GridLines="None"([^<>]*(?>(?>(?'open'<)[^<>]*)+(?>(?'-open'>)[^<>]*)+)+(?(open)(?!)))
    

    替换:

     $1 GridLines="None"
    

    查看demo here(转到底部的Context标签查看替换结果)。

    【讨论】:

    • 抱歉有问题。我应该看到这个,但没有。我已经更新了这个问题,如果可能的话,希望能提供进一步的意见
    • 你能查一下吗?我添加了一个 .NET 样式的正则表达式来匹配嵌套的尖括号。我希望您在 ASP 的服务器端运行此检查,以便我们可以利用 .NET 正则表达式。在客户端,使用 JS 风格的正则表达式,我们需要一个不同的 :(
    • 美丽。我只需要进行第二次搜索和替换,因为自封闭标签并没有相当 工作,但这并不算太糟糕。非常感谢您提供出色的解决方案!
    猜你喜欢
    • 2012-07-26
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多