检查转换为数字的字符串是否实际上是actionscript中的数字的最简单方法

Bac*_*alo 14 apache-flex flash

不确定这是否有意义,但我需要检查返回的服务器值是否实际上是一个数字.现在我将所有数字值作为字符串返回,即'7'而不是7.

检查字符串值是否可以实际转换为数字的最简单方法是什么?

Dan*_*Dan 24

最简单的方法是将字符串实际转换为数字并测试它是否为NaN.如果查看Flex API引用,顶级Number()函数表示如果传递给方法的字符串无法转换为Number,它将返回NaN.

幸运的是,Flex(有点)使用isNaN()函数为您完成此操作.你需要做的就是:

var testFlag:Boolean = isNaN( someStringThatMightBeANumber );
Run Code Online (Sandbox Code Playgroud)

如果testFlag为false,则可以将字符串转换为数字,否则无法转换.

编辑

如果在严格模式下编译,上述操作将无效.相反,您需要先转换为Number,然后检查NaN,如下所示:

var testFlag:Boolean = isNaN( Number( someStringThatMightBeANumber ) );
Run Code Online (Sandbox Code Playgroud)


One*_*erd 16

没有测试过,但这应该工作:

if( isNaN(theString) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}
Run Code Online (Sandbox Code Playgroud)

如果您使用AS3和/或严格模式(由back2dos指出),您需要先转换为数字才能进行编译:

if( isNaN(Number(theString)) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为as3严格模式是真的,虽然没有指定.虽然老兄很难得到负面投票 - 我的意思是,你在这里投了3个帖子.如何发表评论并将其留在那里.杰什. (5认同)

afe*_*wcc 0

你可以注意到在actionscript中:

trace(int('7')); // will return 7
Run Code Online (Sandbox Code Playgroud)

trace(int('a')); // will return 0
Run Code Online (Sandbox Code Playgroud)

因此,除了零之外,现在您实际上可以判断字符串是否是数字