Я работаю над функцией, которая использует JQuery MarkItUp! редактор в качестве редактора BBCode. Я разрешаю только небольшое подмножество BBCodes, включая следующее:
[b]
[i]
[quote]
[quote=Mr Incredible]
[img]
[url]
[youtube]
У меня есть поле «Описание» длиной 1500 символов, в котором используется редактор, но я также планирую сохранить 150-символьное дайджест описания со всеми вырезанными BBCode.
В настоящее время я использую простой RegEx, чтобы сделать это в C #. По сути, он встраивает в строку встроенные BBCodes, но оставляет много «шумного контента», такого как URL-адрес [img] или идентификатор видео [youtube], который я также хотел бы удалить из дайджеста.
Вот мой текущий RegEx:
public static String StripBBCode(string bbCode)
{
string r = Regex.Replace(bbCode,
@"\[(.*?)\]",
String.Empty, RegexOptions.IgnoreCase);
// Finally, replace all newlines with a space
r = Regex.Replace(r,
@"(\r\n|\n\r|\r|\n)+",
@" ", RegexOptions.IgnoreCase);
return r;
}
Если я пропущу следующую строку через эту функцию, я получу результат, показанный ниже:
источник
This is [b]bold[/b]. This is [i]italic[/i].
Here is an image:
[img]http://www.phatmac.com/Pics/Movies/Incredibles.jpg[/img]
Here is a link to [url=http://espn.go.com]ESPN[/url].
Here is a YouTube video:
[youtube]WJ0UkZ3W4FA[/youtube]
результат
Это жирный шрифт. Это курсив Вот изображение: http://www.phatmac.com/Pics/Movies/Incredibles.jpg Вот ссылка на ESPN. Вот видео на YouTube: WJ0UkZ3W4FA
Вот что я хочу вернуть
Это жирный шрифт. Это курсив Вот изображение: Вот ссылка на ESPN. Вот видео на YouTube:
Как мне изменить функцию StripBBCode () для достижения этой цели?
EDITED
Предложение Давида ниже в первом ответе было верным.
Вот что я сейчас использую:
string r = Regex.Replace(s,
@"\[youtube\].*\[\/youtube\]",
String.Empty, RegexOptions.IgnoreCase);
r = Regex.Replace(r,
@"\[img\].*\[\/img\]",
String.Empty, RegexOptions.IgnoreCase);