使用正则表达式从我的aspx页面中删除空格

时间:2011-11-24 07:29:17

标签: asp.net

我需要从我的aspx页面中删除一些内容。 1)需要从我的aspx页面中删除空格。 2)需要删除所有html&来自我的aspx页面的css评论。 3)需要删除javascript评论,如单行&多行评论

请给我最好的代码来完成上述工作。

我搜索谷歌并找到下面的代码

 protected override void Render(HtmlTextWriter writer)
    {
        using (HtmlTextWriter htmlwriter = new HtmlTextWriter(new System.IO.StringWriter()))
        {
            base.Render(htmlwriter);
            string html = htmlwriter.InnerWriter.ToString();

            if ((ConfigurationManager.AppSettings.Get("RemoveWhitespace") + string.Empty).Equals("true", StringComparison.OrdinalIgnoreCase))
            {
                // regex for removing white space
                html = Regex.Replace(html, @"(?<=[^])\t{2,}|(?<=[>])\s{2,3}(?=[<])|(?<=[>])\s{2,3}(?=[<])|(?=[\n])\s{2,3}", String.Empty);

                // regex for removing js comment
                //

                html = Regex.Replace(html, @"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}|(?=[\r])\s{2,}", String.Empty);
                // regex for removing white space again
                html = Regex.Replace(html, @"[\f\r\t\v]?([\n\xFE\xFF/{}[\];,<>*%&|^!~?:=])[\f\r\t\v]?", "$1");
                // regex for removing html comment
                html = Regex.Replace(html, @"((<!-- )((?!<!-- ).)*( -->))(\r\n)*", String.Empty);
                // regex for removing line break & carriage return
                html = Regex.Replace(html, @"((\/\*[\s\S]+?\*\/)|(\/\/.+))", String.Empty);
                html = html.Replace(";\r\n", ";");
            }
            writer.Write(html.Trim());
        }
    }

the above code remove white space js comment but affect my script tag which is like
<script type="text/javascript">
    if(!window.jQuery)
    {
         document.write("<script type='text\/javascript' src=<%= this.ResolveClientUrl("~/Scripts/jquery-1.4.1.js") %>><\/script>");
    }
</script>

所以请向我展示正则表达式,它不会影响脚本中&lt; / script&gt; 这种类型的字符。 请给我一个正则表达式的另一个请求 1)需要从我的aspx页面中删除空格。 2)需要删除所有html&amp;来自我的aspx页面的css评论。 3)需要删除javascript评论,如单行&amp;多行评论

我期待来自论坛人员的优化代码。感谢

1 个答案:

答案 0 :(得分:1)

首先,我建议将正则表达式放在一边,因为你将以破解的html / javascript和其他代码结束。

你也花了太多时间在渲染上运行这个函数只是为了获得一些空间,无论如何它们都很好地压缩了gzip。

我只建议使用Microsoft Ajax Minifier最小化css和javascript

http://ajaxmin.codeplex.com/

还有其他一些,但是我已经用jQuery和Yahoo YUI之类的困难库检查了这个,并且在运行中创建了最终代码,没有任何错误。我还建议将所有javascript文件连接到一个,然后制作minifier文件,然后缓存它并使用缓存。我已经读过这个minifier是asp.net 4.5的一部分,并且带有新功能,几乎可以自动完成所有这些功能。

这是飞行中minifier javascript的一个简单示例。请注意,首先我们合并所有文件,然后将它们全部发送到minifier。如果你将每个javascript文件分开,你就不能将它们合并在一起,因为minifier删除了最后一个未使用的';'字符并使一些其他参数发生变化,以便在迷你后不能将它们组合起来。

Minifier MyMin = new Minifier();
CodeSettings cs = new CodeSettings();
cs.MinifyCode = true;
cs.OutputMode = OutputMode.SingleLine;

FinalJavascript = MyMin.MinifyJavaScript(MyOriginalJavascript, cs);