use*_*ser 5 html c# whitespace
我目前正在开发一个程序,允许我将HTML源代码输入到RichTextBox控件中,并从标记之间删除空格.唯一的问题是,我不确定如何区分标记之间的空格和标记内的空格.显然,删除标记内的空格会很糟糕.关于我如何辨别差异的任何想法?
示例:(在移除空格之前)
<p>blahblahblah</p> <p>blahblahblah</p>
Run Code Online (Sandbox Code Playgroud)
示例:(删除空格后)
<p>blahblahblah</p><p>blahblahblah</p>
Run Code Online (Sandbox Code Playgroud)
在链接的解决方案,Rasik送到这里它是一个解决方案,你也
Regex.Replace(html, @"\s*(<[^>]+>)\s*", "$1", RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)
常规采用标记原样和周围空格字符并用标记更改它.
编辑: 一个适用于Micheal示例的更好的解决方案
Regex.Replace(txtSource.Text,
@"\s*(?<capture><(?<markUp>\w+)>.*<\/\k<markUp>>)\s*", "${capture}", RegexOptions.Singleline);
Run Code Online (Sandbox Code Playgroud)
这个正则表达式将检测标记标记,不要改变它的内部并删除空格.还有其他一些案例可供选择.就像没有结束标记的标记一样.
我正在使用以下内容。我的头顶上,缺点是没有处理HTML注释和CDATA内的括号。HTML中是否还有其他不表示标签的尖括号?
public static class HtmlHelper
{
// positive look behind for ">", one or more whitespace (non-greedy), positive lookahead for "<"
private static readonly Regex InsignificantHtmlWhitespace = new Regex(@"(?<=>)\s+?(?=<)");
// Known not to handle HTML comments or CDATA correctly, which we don't use.
public static string RemoveInsignificantHtmlWhiteSpace(string html)
{
return InsignificantHtmlWhitespace.Replace(html, String.Empty).Trim();
}
}
Run Code Online (Sandbox Code Playgroud)