【问题标题】:Remove JavaScript comments from string with C#使用 C# 从字符串中删除 JavaScript 注释
【发布时间】:2009-01-17 18:35:39
【问题描述】:

我正在尝试从 C# 的刺痛中删除 javascript cmets(///**/)。 有没有人有它的正则表达式。我正在阅读 javascript 文件列表,然后将它们附加到字符串中,并尝试清理 javascript 代码并使其轻松加载。下面您会发现其中一个与/* */ cmets 配合良好的正则表达式,但我也需要删除// cmets:

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

【问题讨论】:

  • 为什么你的问题都是斜体?

标签: c# javascript


【解决方案1】:

您不能使用简单的正则表达式从 JS 中删除 cmets - 至少不可靠。例如,想象一下,尝试处理以下内容:

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>;

你可以让你的正则表达式比现在更好地工作,方法是让它以'*/'结束而不是仅仅'/',并在它周围加上一个或子句,将 // 的测试添加到换行符。但它永远不会是万无一失的,因为正则表达式无法解析 JavaScript 或 [X]HTML 等语言。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 该链接出于某种原因指向 C 实现而不是 C# 实现
    【解决方案3】:

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

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

    【讨论】:

    • 我可能有点偏见,但我也推荐这个。只是希望我能用这个项目修复我的最后一个小错误*叹息......并提示一些专业帮助? :) *
    • 我会担保 YUI Compressor for .NET。我已将它集成到我的构建过程中——我会自动从每个 myfile.debug.js 生成一个 myfile.min.js 文件。太棒了。
    【解决方案4】:

    我推荐程序stripcmt

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

    简单而强大,完美地完成工作。

    【讨论】:

      【解决方案5】:
      content = Regex.Replace(content,
                              "/\\*.*?\\*/",
                              String.Empty,
                              RegexOptions.Compiled | RegexOptions.Singleline);

      【讨论】:

      • 这真的很糟糕
      • 为什么真的很糟糕?如果您要发表这样的评论,那么发布者和其他人应该知道,以便他们可以就是否应该使用一种解决方案而不是另一种解决方案做出明智的决定。
      • 在大多数情况下它会失败,破坏 javascript 代码并使其无法使用。
      猜你喜欢
      • 2016-08-31
      • 2017-01-19
      • 2014-04-22
      • 1970-01-01
      • 2021-01-04
      • 2012-01-27
      • 1970-01-01
      • 2013-04-12
      • 2018-01-01
      相关资源
      最近更新 更多