C# 使用C从字符串中删除JavaScript注释#
我正试图用C#从sting中删除javascript注释(C# 使用C从字符串中删除JavaScript注释#,c#,javascript,C#,Javascript,我正试图用C#从sting中删除javascript注释(/和/***/)。 有人用正则表达式吗。我正在阅读javascript文件列表,然后将它们附加到字符串中,并尝试清理javascript代码,使其易于加载。下面,您将发现其中一个正则表达式可以很好地处理/**/注释,但我也需要删除/注释: content = System.Text.RegularExpressions.Regex.Replace(content, @"/\*[^/]*/", string.Empty);
/
和/***/
)。
有人用正则表达式吗。我正在阅读javascript文件列表,然后将它们附加到字符串中,并尝试清理javascript代码,使其易于加载。下面,您将发现其中一个正则表达式可以很好地处理/**/
注释,但我也需要删除/
注释:
content = System.Text.RegularExpressions.Regex.Replace(content,
@"/\*[^/]*/",
string.Empty);
如果你想缩小Javascript文件(“轻装”),为什么不试试呢?页面底部有到c#实现的链接()可以是Regex的替代方法,它可以让您删除注释并缩小JavaScript代码
// Note: string javaScript == some javascript data loaded from some file, etc.
compressedJavaScript= JavaScriptCompressor.Compress(javaScript);
您不能使用简单的正则表达式从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>;
alert('string\'//not-a-comment');//注释/*非嵌套注释
警报(‘非评论’);//评论*/*仍然是评论
警报(‘非评论’);/*警报(“已注释代码”);
//仍然是一条评论*/alert('not-a-comment');
变量re=/\/*非注释*/;/*评论
var e4x=//非注释;
通过使正则表达式结束于“*/”而不是仅仅结束于“/”,并在其周围包装一个or子句,将对//的测试添加到换行符中,可以使正则表达式比现在工作得更好。但它永远不会是防弹的,因为regex没有解析JavaScript或[X]HTML等语言的能力。我推荐该程序:
StripCmt是一个简单的实用程序
在C中删除C、C++的注释,
和Java源文件。盛大的
Unix文本处理的传统
程序,它可以作为
FIFO(先进先出)滤波器或
接受命令行上的参数
简单而有力,工作做得完美。为什么你的问题都是斜体字?我可能有点偏颇,但我也建议这样做。真希望我能用这个项目修复我的最后一个小错误。。。和一些专业帮助提示?:)*我会为你担保.NET的压缩机。我已经将它集成到构建过程中——我自动从每个myfile.debug.js生成一个myfile.min.js文件。这太棒了。出于某种原因,这个链接指向的是C实现而不是C实现。这真的很糟糕。为什么它真的很糟糕?如果你打算留下这样的评论,那么海报和其他人应该知道,这样他们就可以做出明智的决定,决定是否应该使用一种解决方案而不是另一种。在大多数情况下,它失败了,破坏了javascript代码,使其无法使用。
content = Regex.Replace(content,
"/\\*.*?\\*/",
String.Empty,
RegexOptions.Compiled | RegexOptions.Singleline);