【问题标题】:Automatic formatting in web page content网页内容中的自动格式化
【发布时间】:2010-06-07 19:49:53
【问题描述】:

我将内容作为原始文本存储在数据库中,并显示在网站的 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>

这样做的最佳方法是什么。某种查找和替换?这里有其他模式匹配/正则表达式解决方案吗?

【问题讨论】:

    标签: c# regex asp.net-mvc


    【解决方案1】:

    目前还不清楚这些数字的确切格式。如果规则是任何由大写字母、冒号和数字 n 组成的内容都应转换为链接www.mysite.com/parts/n,那么您可以使用基于正则表达式的查找和替换解决方案.你会想要寻找正则表达式[A-Z]+:(\d+)。这说的是“找到一个或多个大写字母、一个冒号,并(捕获它们)找到一个或多个数字”。然后你想用&lt;a href='www.mysiste.com/parts/$1'&gt;$0&lt;/a&gt;替换它;在这种情况下,$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】:

      假设:
      零件编号始终为 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;
      
      }
      

      您可以将模型中的数据传递给此辅助方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-06
        • 2011-05-01
        • 2017-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多