ActionScript将字符串转换为整数

10

我正在使用Actionscript 2.0.

在一个全新的场景中,我的唯一代码片段是:

    trace(int('04755'));
    trace(int('04812'));

结果为:

  • 2541

  • 4812

有任何想法我做错了什么/愚蠢的地方吗?

顺便说一下,我是从 XML 中获取这个源数字的,而且它已经有前导零了。此外,在 Actionscript 3 中,这个方法非常完美。

4个回答

30

在AS3中,您可以尝试:

parseInt('04755', 10)

10以上是基数


因为这似乎是比字符串操作更好的方法来去除前导0,根据文档,它也应该适用于AS2。 - Mike Demenok
3
我之前2个月回答了这个问题,但我的回答被忽视了!太好了! - Engineer
2
@NickWiggill,这个答案与你的不同之处在于Rahul使用了基数参数,而你没有。我也不知道为什么我会如此天真地提供我的现有答案,但是(我猜是3年前)。 - Marty

18
parseInt(yourString);

... 是正确答案。.parseInt() 是一个顶级函数。


8

在ActionScript 2中,将一个带有前导0的字符串转换为数字会假定你想要的数字是八进制。试试我为您制作的此函数:

var val:String = '00010';

function parse(str:String):Number
{
    for(var i = 0; i < str.length; i++)
    {
        var c:String = str.charAt(i);
        if(c != "0") break;
    }

    return Number(str.substr(i));
}

trace(parse(val)); // 10
trace(parse(val) + 10); // 20

现在您想要做的就是将字符串放入上述parse()函数中,而不是像通常一样使用int()Number()


谢谢这个函数,运行得很好!我本来就猜这是在干什么,但这段代码让我节省了很多时间。 - vanhornRF

0

有点简单...

试试这个 -

temp="120";
temp2="140";
temp3=int ( temp );
temp4=int ( temp2 );
temp5=temp4+temp3;
trace(temp5);

所以,你需要的只是...

int("190");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接