从字符串的 JS 函数中获取函数参数
Get function parameters from a JS function which is a string
我正在解析一个网页,我以字符串形式获得以下JS函数
"translate(737.4170532226562,136.14541625976562)"
我想解析字符串以获取函数的两个参数。
我可以将字符串解析为"("和","和")"以获取参数 - 我想知道是否有任何其他方法可以从这个字符串函数中获取参数。
您可以使用正则表达式来实现此目的。例如这个:/(['d'.]+),(['d'.]+)/
var str = "translate(737.4170532226562,136.14541625976562)";
var args = /(['d'.]+),(['d'.]+)/.exec(str)
var a1 = args[1], a2 = args[2];
document.write(['First argument: ', a1, '<br> Second argument: ', a2].join(''))
这可能是矫枉过正。但是我很无聊。所以这里有一个函数名称解析器。它获取函数名称和参数。
var program = "translate(737.4170532226562,136.14541625976562)";
function Parser(s)
{
this.text = s;
this.length = s.length;
this.position = 0;
this.look = '0'
this.next();
}
Parser.prototype.isName = function() {
return this.look <= 'z' && this.look >= 'a' || this.look <= '9' && this.look >= '0' || this.look == '.'
}
Parser.prototype.next = function() {
this.look = this.text[this.position++];
}
Parser.prototype.getName = function() {
var name = "";
while(parser.isName()) {
name += parser.look;
parser.next();
}
return name;
}
var parser = new Parser(program);
var fname = parser.getName();
var args = [];
if(parser.look == '(') {
parser.next();
args.push(parser.getName());
while(parser.look == ',') {
parser.next();
args.push(parser.getName());
}
} else {
throw new Error("name must be followed by ()")
}
console.log(fname, args);
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数