问题
Using a webbrowser control. I'd like to count the number of characters into webbrowser, just like textchange of Textbox
class. I just want to count the number of characters in the text that display WebBrowser
no html, no images, etc.Any idea about how simulate the behavior of textbox which trigger when change text displayed? Thanks
I'm developing Winforms in C#. No ASP.NET.
回答1:
Add the following class:
using System.Text.RegularExpressions;
namespace CK.TicketSystem.Shared { public static class HtmlUtils { public static bool IsHtmlFragment(string value) { return Regex.IsMatch(value, @""); }
/// <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);
}
}
}
I must say that I found this class in some really good developer's blog, but unfortunately I can not remember where I did find it.
Then you do:
var str = HtmlUtils.RemoveTags(yourHtmlString);
var numberOfCharacters = str.Length;
Hope it helps
来源:https://stackoverflow.com/questions/40939580/how-do-i-count-number-of-characters-into-webbrowser-control-c