如何动态替换字符串的自定义标记

本文关键字:字符串 自定义 替换 何动态 动态 | 更新日期: 2023-09-27 18:05:53

我在其中一个MSSQL表中保存了以下字符串:

"Inflicts [regular damage]{mechanic:regular-damage}."

我想将[]中的所有内容替换为指向mechanic:regular-damage的链接,如下所示:

"Inflicts <a href='"/Mechanics.aspx?Name=regular-damage'">regular damage</a>."

我怎么能那样做呢?

如何动态替换字符串的自定义标记

您需要捕获三样东西—方括号的内容、冒号之前的花括号的内容以及花括号的其余内容。您可以使用以下regex:

@"'[([^']]+)']{([^:]+):([^}]+)}"
//  ^^^^^^^^   ^^^^^^^ ^^^^^^^
//  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>.

演示。