2009-01-17 50 views
3

我正在嘗試從C#中刪除javascript評論(///**/)。 有沒有人有RegEx。我正在閱讀JavaScript文件列表,然後將它們附加到字符串並嘗試清理JavaScript代碼並使其加載。貝婁,你會發現,與/* */評論工作正常的正則表達式中的一個,但我需要刪除//評論過:從C#字符串中刪除JavaScript評論#

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

爲什麼您的問題全部以斜體顯示? – Malfist 2009-01-17 18:41:28

回答

5

正則表達式的替代方案可以是YUI Compressor for .Net,它可以允許您刪除註釋並縮小JavaScript代碼。

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

我可能有點偏見,但我也建議這樣做。只希望我可以修復我的最後一個小錯誤與這個項目*嘆...並提示一些親的幫助? :) * – 2009-02-18 23:13:00

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

你可以讓你的正則表達式更好地工作比現在通過使其結束對「* /」,而不只是「/」,和包裝的或 - 子句圍繞它添加//直到換行符的測試。但它永遠不會是無懈可擊的,因爲正則表達式不具有解析JavaScript或[X] HTML等語言的能力。

0

我推薦的程序stripcmt

StripCmt是用C寫 刪除從C,C++, 和Java源文件註釋一個簡單的工具。在Unix文本處理 程序的傳統中,它可以作爲一個 FIFO(先進先出)過濾器或 接受命令行參數。

簡單健壯,完美無瑕地完成工作。

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