Автоматическое форматирование содержимого веб-страницы - PullRequest
0 голосов
/ 07 июня 2010

У меня есть содержимое, хранящееся в виде необработанного текста в базе данных, которое я показываю в таблице 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>

Какой лучший способ сделать это. Как-то найти и заменить? Есть ли здесь какое-то другое решение для сопоставления с образцом / регулярного выражения?

Ответы [ 2 ]

2 голосов
/ 08 июня 2010

Непонятно, в каком формате имеют числа. Если правило состоит в том, что все, что состоит из заглавных букв, двоеточия и числа 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>");
0 голосов
/ 08 июня 2010

Предположения:
Номер детали всегда 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;

}

Вы можете передать данные из модели этому вспомогательному методу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...