Asp.Net C # Html String Preview с использованием Regex - PullRequest
0 голосов
/ 21 февраля 2011

Я получил класс предварительного просмотра строки, который берет строку Html из базы данных или просто старую строку html и выводит предварительный просмотр x символов .... Теперь мой начальник попросил меня преобразовать его в регулярное выражение, и я ударилстена на некоторое время сейчас.Если кто-нибудь может мне помочь с этим.

Особая часть, которая больше всего касается меня, - это получение символов x без включения тегов в счетчик, но и без уничтожения тегов.

Я был бы рад, если бы у кого-нибудь было что-то, о чем я читал, или что-то вроде кодекса.

1 Ответ

0 голосов
/ 25 октября 2011

Задача проста, мой друг ... звучит как интересный босс.

void Main()
{
    string test = "<html>wowzers description: none <div>description:a1fj391</div></html>";
    string result = getFirstChars(test, 15);
    Console.WriteLine(result);  

    //result: wowzers descrip
}

static Regex MyRegex = new Regex(
      "(?<tag></?\\s*\\w+\\s*>*)",
    RegexOptions.Compiled);

static string getFirstChars(string html, int count)
{
    string nonTagText = MyRegex.Replace(html,"");
    return nonTagText.Substring(0, count);
}

если вы хотите сохранить теги ... тогда вы можете сделать это:

void Main()
{
    string test = "<html><b>wowzers</b> description: none <div>description:a1fj391</div></html>";
    string result = getFirstChars(test, 15);
    Console.WriteLine(result);  

    //result: <html><b>wowzers</b> descrip
}

static Regex MyRegex = new Regex(
       "(?<tag></?\\s*\\w+\\s*>)(?<content>[^<]*)",
    RegexOptions.Compiled);

static string getFirstChars(string html, int count)
{
    int totalCount = 0;
    int contentCount = 0;
    foreach(Match match in MyRegex.Matches(html))
    {
        contentCount += match.Groups["content"].Length;
        totalCount += match.Length;
        if(contentCount >= count)
        {
            totalCount -= contentCount - count;
            break;
        }
    }

    return html.Substring(0, totalCount);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...