【发布时间】:2016-09-21 09:03:01
【问题描述】:
我需要从 javascript 文件中获取特定函数及其主体作为文本,并使用 C# 将该函数打印为输出。我需要将函数名称和 js 文件作为输入参数。我尝试使用正则表达式,但无法达到预期的结果。这是正则表达式的代码。
public void getFunction(string jstext, string functionname)
{
Regex regex = new Regex(@"function\s+" + functionname + @"\s*\(.*\)\s*\{");
Match match = regex.Match(jstext);
}
有没有其他方法可以做到这一点?
【问题讨论】:
-
我认为您会发现 javascript 不够常规。如果不跟踪打开和关闭括号的数量,我想不出一种方法来做到这一点,但是如果不匹配的
}出现在字符串或 javascript 正则表达式中,您还需要考虑。除非您愿意对该功能做出大量假设,否则您可能应该查看existing javascript parsers for .net。 -
定义:
couldnt achieved the desired result. -
你需要支持
var functionName = function(x) { ... }这样的功能吗?window['function' + name] = function(x) { ... }呢? -
更不用说
(function(x) { ... })("foo")- 即,IIFE -
好吧 -
var myFunc = (function(x){ return function() { ... })("foo");是一个命名函数myFunc但你不会用上面的正则表达式找到它;)
标签: javascript c#