如何评估字符串中的表达式?

时间:2011-02-04 11:06:28

标签: flex actionscript-3

我需要在运行时评估字符串中的表达式。不确定如何在Flex中实现这一点。我的要求如下

var test:String = "myparams.id=10" ;
//test will be a string populated at runtime.
// I need to treat it as an expression and evaluate it at runtime

if(test)

{

 // do something

}

else

{
 //do something
}

是否可以执行类似此动作脚本3的操作?

我相信之前的eval函数允许这样做,但现在已经折旧了吗?

此致 阿帕娜

4 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

var nameValuePairs : Array = test.split('=');
var variableName : String = nameValuePairs[0];
var variableValue : String = nameValuePairs[1];

但是如果可以的话,最好避免这种解析并使用XML或JSON或其他东西。

答案 1 :(得分:1)

如果你计划这么做,或者你打算尝试解析更复杂的数学表达式,那么考虑使用MathParser类:

http://www.flashandmath.com/intermediate/mathparser/mp1.html

答案 2 :(得分:0)

daniel是绝对正确的,你应该避免使用它,但是如果你必须这样做,它会像这样工作:

private var myId : Number = 10;
public function StringTest()
{
    var myTestString : String = "myId=10";
    var array : Array = myTestString.split("=");
    if(this[array[0]] == array[1])
    {
        trace("variable " + array[0] + " equals " + array[1]);
    }
}

如果只将array [0]与array [1]进行比较,它将比较字符串,但使用此[array [0]]将在函数范围内查找具有此标识符的变量。请注意,如果找不到变量,它将抛出ReferenceError。所以你可能想把它放到try {..} catch(error:ReferenceError){...}语句中。

答案 3 :(得分:-1)

var myparams.id=0;

// ...
// ...
// ...

var test:String = "myparams.id=10";<br>
setTimeout(test, 0);