使用C#从字符串中删除JavaScript注释

时间:2009-01-17 18:35:40

标签: c# javascript

我正在尝试使用C#删除javascript评论(///**/)。 有人有RegEx吗?我正在阅读javascript文件列表,然后将它们附加到字符串并尝试清理javascript代码并轻松加载。 Bellow你会发现其中一个RegEx适用于/* */条评论,但我也需要删除//个评论:

content = System.Text.RegularExpressions.Regex.Replace(content,
    @"/\*[^/]*/", 
    string.Empty);

5 个答案:

答案 0 :(得分:7)

如果您想缩小Javascript文件(“轻松加载”),为什么不试试JSMin by Douglas Crockford?页面底部有一个指向c#实现的链接(http://www.crockford.com/javascript/jsmin.cs

答案 1 :(得分:7)

您无法使用简单的正则表达式从JS中删除注释 - 至少不可靠。想象一下,例如,试图处理像:

这样的东西
alert('string\' // not-a-comment '); // comment /* not-a-nested-comment
alert('not-a-comment'); // comment */* still-a-comment
alert('not-a-comment'); /* alert('commented-out-code');
// still-a-comment */ alert('not-a-comment');
var re= /\/* not-a-comment */; //* comment
var e4x= <x>// not-a-comment</x>;

你可以让你的正则表达式比现在更好,使它以'* /'而不仅仅是'/'结尾,并将or-clause包装到它上面,为//添加对新行的测试。但它永远不会是防弹的,因为正则表达式无法解析JavaScript或[X] HTML等语言。

答案 2 :(得分:5)

正则表达式的替代方法可以是YUI Compressor for .Net,它可以让您删除评论并缩小JavaScript代码。

// Note: string javaScript == some javascript data loaded from some file, etc.
compressedJavaScript= JavaScriptCompressor.Compress(javaScript); 

答案 3 :(得分:0)

我推荐程序stripcmt

  

StripCmt是一个简单的实用程序   在C中删除C,C ++中的注释,   和Java源文件。在盛大   Unix文本处理的传统   程序,它可以作为一个   FIFO(先进先出)滤波器或   接受命令行上的参数。

简单而强大,完美无瑕。

答案 4 :(得分:0)

content = Regex.Replace(content,
                        "/\\*.*?\\*/",
                        String.Empty,
                        RegexOptions.Compiled | RegexOptions.Singleline);
相关问题