【发布时间】:2012-02-04 11:41:12
【问题描述】:
在 ASP.NET MVC 3 上,我创建了一个动作过滤器,用于从整个 html 中删除空白。它大部分时间都像我预期的那样工作,但现在我需要更改正则表达式,以免触及 pre 元素内部。
我从很棒的Mads Kristensen 的博客中获得了 RegEx 逻辑,但我不知道如何为此修改它。
逻辑如下:
public override void Write(byte[] buffer, int offset, int count) {
string HTML = Encoding.UTF8.GetString(buffer, offset, count);
Regex reg = new Regex(@"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}");
HTML = reg.Replace(HTML, string.Empty);
buffer = System.Text.Encoding.UTF8.GetBytes(HTML);
this.Base.Write(buffer, 0, buffer.Length);
}
过滤器的完整代码:
有什么想法吗?
编辑:
重要提示:
我的意图完全不是加快响应时间。实际上, 也许这会减慢速度。我压缩了页面,这个缩小让我 每页增加大约 4 - 5 kb,这没什么。
【问题讨论】:
-
每页 4 到 5 kb 是不是什么都没有!
-
这个正则表达式很糟糕,写它的人并不真正知道他们在做什么。
-
@tugberk,这是多余的,而且有些地方是错误的。删除第一个更改,删除第三个更改,删除所有
[和]字符。您最终会得到一个等效的表达式,但更短、更快、更简洁。 -
只是出于兴趣,您为什么对每个请求都这样做?为什么不把内容发布到网站上呢?
标签: c# javascript asp.net asp.net-mvc regex