我正在尝试使用C#删除javascript评论(//
和/**/
)。
有人有RegEx吗?我正在阅读javascript文件列表,然后将它们附加到字符串并尝试清理javascript代码并轻松加载。 Bellow你会发现其中一个RegEx适用于/* */
条评论,但我也需要删除//
个评论:
content = System.Text.RegularExpressions.Regex.Replace(content,
@"/\*[^/]*/",
string.Empty);
答案 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);