代码之家  ›  专栏  ›  技术社区  ›  leora Matt Lacey

网页内容中的自动格式设置

  •  0
  • leora Matt Lacey  · 技术社区  · 14 年前

    我将内容作为原始文本存储在数据库中,并在网站的HTML表中显示。在内容中,人们引用数字,我希望这些数字自动成为链接

    例如,在一个领域里

    This description is for driving a car.  The manual refers to ABC:25920 and is very durable.
    

    在上面的这个例子中,我希望abc:2590实际上是一个转换成这个html的html链接。

    <a href='www.mysite.com/parts/25920'>ABC:25920</a>
    

    最好的方法是什么?有什么发现和替换吗?这里还有其他模式匹配/正则表达式解决方案吗?

    2 回复  |  直到 11 年前
        1
  •  2
  •   Antal Spector-Zabusky    14 年前

    目前还不清楚数字的格式。如果规则是由大写字母、冒号和数字组成的任何内容 n 应该变成链接 www.mysite.com/parts/n ,然后可以使用基于regex的查找和替换解决方案。你想找雷吉克斯 [A-Z]+:(\d+) . 这意味着“找到一个或多个大写字母、一个冒号,然后(捕获它们)找到一个或多个数字”。然后你想把这个换成 <a href='www.mysiste.com/parts/$1'>$0</a> 在这种情况下, $1 指回捕获组(即数字),以及 $0 指整个比赛。我不知道C,但我想这个看起来像

    using System.Text.RegularExpressions;
    // ...
    string result = Regex.replace( getTextFromDatabase()
                                 , @"[A-Z]+:(\d+)"
                                 , "<a href='www.mysiste.com/parts/$1'>$0</a>");
    
        2
  •  0
  •   Ta01    14 年前

    假设:
    零件号始终为5位数
    部件标识符是三个字母字符。

    static string RegexLinkify(string text)
    { 
        string pattern = @"(?<alphaCode>[A-Z][A-Z][A-Z]):(?<partNumber>\d{5})";
        Regex r = new Regex(pattern, RegexOptions.Singleline);
        Match matches = r.Match(text);
        string alphaCode = matches.Groups["alphaCode"].Value.ToString();
        string partNumber = matches.Groups["partNumber"].Value.ToString();
        string url = "<a href='www.mysite.com/parts/{0}'>{1}:{0}</a>";
        url = string.Format(url, alphaCode, partNumber);
        return url;
    
    }
    

    您可以将数据从模型传递到此助手方法。