2015-08-02 3 views
0

У меня есть следующие строки сохраняются в одном из моих таблиц MSSQL:Как динамически заменить пользовательские теги строки?

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

Я хочу, чтобы заменить все внутри [] для ссылки, указывающей на механику: регулярное повреждение, как это:

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

Как я мог это сделать? Заранее спасибо.

+0

Вы пробовали что-нибудь. Regex, String ops и т. Д. – EZI

+0

@EZI Я пробовал регулярное выражение, но я потерпел неудачу. –

ответ

1

Вам нужно уловить три вещи - содержимое квадратных скобок, содержимое фигурных скобок перед двоеточием и остальную часть фигурных скобок. Вы можете сделать это с помощью этого регулярное выражение:

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

Demo.

+0

Вы даже дали мне демо, тысячу благодаря вам! –

Смежные вопросы