我在一个MSSQL表中保存了以下字符串:
"Inflicts [regular damage]{mechanic:regular-damage}."
我想替换[]内的所有内容,指向一个指向机制的链接:常规损坏,如下所示:
"Inflicts <a href=\"/Mechanics.aspx?Name=regular-damage\">regular damage</a>."
我怎么能这样做?提前谢谢。
答案 0 :(得分:2)
你需要捕捉三件事 - 方括号的内容,冒号前的花括号的内容,以及花括号的其余内容。您可以使用此正则表达式执行此操作:
@"\[([^\]]+)\]{([^:]+):([^}]+)}"
// ^^^^^^^^ ^^^^^^^ ^^^^^^^
// Group$1 Group$2 Group$3
通过捕获这三个组,您可以使用此替换模板格式化答案:
@"<a href=""$2.aspx?Name=$3"">$1</a>"
总而言之,你得到了
var s = @"Inflicts [regular damage]{mechanic:regular-damage}.";
var r = Regex.Replace(
s
, @"\[([^\]]+)\]{([^:]+):([^}]+)}"
, @"<a href=""$2.aspx?Name=$3"">$1</a>"
);
这会产生
Inflicts <a href="mechanic.aspx?Name=regular-damage">regular damage</a>.