我将内容存储为原始文本存储在我在网站上的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>
这样做的最佳方法是什么。某种寻找和替换?这里有其他模式匹配/正则表达式解决方案吗?
答案 0 :(得分:2)
目前尚不清楚这些数字的格式。如果规则是由大写字母,冒号和数字 n 组成的任何内容都应该转换为链接www.mysite.com/parts/n
,那么您可以使用基于正则表达式的查找 - 和 - 替换解决方案您可能希望查找正则表达式[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>");
答案 1 :(得分:0)
假设:
部件号始终为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;
}
您可以将模型中的数据传递给此辅助方法。