替换为正则表达式/通配符

时间:2014-04-07 04:48:53

标签: c# regex replace

我使用控制台应用程序将数千个页面从一个环境迁移到另一个环境

我正在更新HTML中的所有链接,以反映新的网站层次结构,但工作正常但我认为可以稍微提高性能

旧链接的网址类似于:

HREF =" me.get site.sectionshow&安培; Page300"

在新环境中,它将类似于

HREF =" HTTP://siteA/pages/page300.aspx"

我有这个循环来替换URL:

string updatedContent = content;

for (int i = 1; i < 600; i++)
{
    // these are for links to other pages
    updatedContent = updatedContent.Replace("href=\"me.get?site.sectionshow&PAGE" + i.ToString("D3"),
        applicationSite + "/pages/page" + i.ToString("D3") + ".aspx");

    updatedContent = updatedContent.Replace("href=\"me.get?site.sectionshow&Page" + i.ToString("D3"),
        applicationSite + "/pages/page" + i.ToString("D3") + ".aspx");

    updatedContent = updatedContent.Replace("href=\"me.get?site.sectionshow&page" + i.ToString("D3"),
        applicationSite + "/pages/page" + i.ToString("D3") + ".aspx");
}

return updatedContent;

有时,sectionshow全部是小写的,有时是大写的,有时是混合的,与Page / page / PAGE

相同

是否有一种巧妙的方法来使用正则表达式或类似的方法在循环中没有这些多个语句?我可以将所有链接设为小写但不包含其他HTML内容。

提前致谢。

1 个答案:

答案 0 :(得分:0)

for (int i = 0; i < 600; i++)
{
    const string original = "href=\"me.get?site.sectionshow&page;"
    const string replace = "/pages/page";
    Regex reg = new Regex(original + i.ToString("D3"), RegexOptions.IgnoreCase);
    reg.Replace(updatedContent, replace + i.ToString("D3") + ".aspx")
}