2010-07-01 57 views
0

我想知道解決這個問題的最佳方法。我在我的web應用程序中有一個JavaScript文件,它有許多不同的方法,都有相同的簽名。ASP.NET C#閱讀JavasScript文件和解析方法名稱與某些簽名?

我想要做的是在JS文件服務器端讀取並解析出只有具有該特定簽名的方法的所有方法名稱。

比方說,我的JS文件看起來像下面:

function DoSomething(s1, s2) 
{ 
} 

function DoSomething2(s1, s2) 
{ 
} 

function DoSomething3(s1, s2, s3) 
{ 
} 

比方說,我一直在尋找的簽名是(S1,S2)。我想要處理JavaScript文件,並且結果將是一個其中包含DoSomething和DoSomething2的List。

解決此問題的最好方法可能是使用正則表達式和字符串解析?

回答

1
/function\s+(\w+)\s*\(\s*s1\s*,\s*s2\s*\)/ 

應該這樣做,但它可能是明智的,也檢查被分配給變量函數:

/(\w+)\s*(?:=|:)\s*function\s*\(\s*s1\s*,\s*s2\s*\)/ 

這將匹配這樣的代碼:

var dudewhat = function(s1, s2) {} 

zomg: function(s1,s2) {} 

當然它將不匹配分配給帶括號記號的數組/對象的函數,如object[property] = function() {},但是如果您想要函數名稱,那麼這些分配類型可能並不重要。

+0

當試圖找到函數體時,會出現複雜性,因爲可能會有許多打開和關閉的花括號。 – 2010-07-01 16:23:05

+2

當然是的,但問題只是詢問「方法名稱」,而不是函數體。 – MooGoo 2010-07-01 16:26:31