2016-12-02 4 views
-1

Использование элемента управления веб-браузером. Я хотел бы подсчитать количество символов в webbrowser, точно так же, как textchange Textbox. Я просто хочу подсчитать количество символов в тексте, отображающих WebBrowser no html, без изображений и т. Д. Любая идея о том, как имитировать поведение текстового поля, которое вызывается при изменении отображаемого текста? СпасибоКак подсчитать количество символов в элементе управления веб-браузером C#?

Я разрабатываю Winforms в C#. Нет ASP.NET.

+1

элементу управление WebBrowser отображает гораздо больше, чем текст. Например, он включает в себя изображения. Вы просто хотите подсчитать количество символов в тексте, который он отображает? Или вы хотите подсчитать количество символов в исходном HTML? Вы также ссылаетесь на событие TextChanged для TextBox, которое запускается, когда текст, отображаемый в текстовом поле, изменяется ... эквивалентное событие для WebBrowser было бы чем-то вроде Navigated. Ваш вопрос нуждается в гораздо более подробной информации. –

+0

Вы говорите о подсчете символов html-документа? –

+0

Просьба уточнить ваши намерения, чтобы мы могли ответить на ваш вопрос. –

ответ

1

Добавьте следующий класс:

using System.Text.RegularExpressions; 

пространства имен CK.TicketSystem.Shared { общественный статический класс HtmlUtils { общественности статической BOOL IsHtmlFragment (строковое значение) { возвращение Regex.IsMatch (значение, @ ""); }

/// <summary> 
    /// Remove tags from a html string 
    /// </summary> 
    /// <param name="value"></param> 
    /// <returns></returns> 
    public static string RemoveTags(string value) 
    { 
     if (value != null) 
     { 
      value = CleanHtmlComments(value); 
      value = CleanHtmlBehaviour(value); 
      value = Regex.Replace(value, @"</[^>]+?>", " "); 
      value = Regex.Replace(value, @"<[^>]+?>", ""); 
      value = value.Trim(); 
     } 
     return value; 
    } 

    /// <summary> 
    /// Clean script and styles html tags and content 
    /// </summary> 
    /// <returns></returns> 
    public static string CleanHtmlBehaviour(string value) 
    { 
     value = Regex.Replace(value, "(<style.+?</style>)|(<script.+?</script>)", "", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

     return value; 
    } 

    /// <summary> 
    /// Replace the html commens (also html ifs of msword). 
    /// </summary> 
    public static string CleanHtmlComments(string value) 
    { 
     //Remove disallowed html tags. 
     value = Regex.Replace(value, "<!--.+?-->", "", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

     return value; 
    } 

    /// <summary> 
    /// Adds rel=nofollow to html anchors 
    /// </summary> 
    public static string HtmlLinkAddNoFollow(string value) 
    { 
     return Regex.Replace(value, "<a[^>]+href=\"?'?(?!#[\\w-]+)([^'\">]+)\"?'?[^>]*>(.*?)</a>", "<a href=\"$1\" rel=\"nofollow\" target=\"_blank\">$2</a>", RegexOptions.IgnoreCase | RegexOptions.Compiled); 
    } 
} 

}

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

Тогда вы:

var str = HtmlUtils.RemoveTags(yourHtmlString); 
var numberOfCharacters = str.Length; 

Надеется, что это помогает

+0

Perfect. Благодаря! –

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