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

时间:2009-08-06 17:42:04

标签: flex flash

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

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

11 个答案:

答案 0 :(得分:24)

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

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

var testFlag:Boolean = isNaN( someStringThatMightBeANumber );

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

修改

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

var testFlag:Boolean = isNaN( Number( someStringThatMightBeANumber ) );

答案 1 :(得分:16)

尚未对此进行测试,但这应该有效:

if( isNaN(theString) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}

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

if( isNaN(Number(theString)) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}

答案 2 :(得分:4)

这个问题的大多数答案都有一个重大缺陷。如果你取Number(null)或Number(undefined)或Number(“”),所有都将返回0并将评估为“是一个数字”。尝试这样的事情:

function isANumber( val:* ):Boolean {
    return !(val === null || val === "" || isNaN(val));
}

答案 3 :(得分:3)

RegExp路径:

function stringIsAValidNumber(s: String) : Boolean {
    return Boolean(s.match(/^[0-9]+.?[0-9]+$/));
}

答案 4 :(得分:1)

这是另一种检查值是否可以转换为数字的方法:

var ob:Object = {a:'2',b:3,c:'string'};

for( var v:* in ob){
 var nr:Number = ob[v];
 trace(ob[v]+" "+(nr === Number(nr)))
}

这将追踪以下内容:

2 true
3 true
string false

答案 5 :(得分:0)

您可以在动作中注意到:

trace(int('7')); // will return 7

trace(int('a')); // will return 0

所以除零之外,如果字符串是数字

,你现在可以

答案 6 :(得分:0)

这会尝试将您的String转换为Number,基本上是64位浮点数:

var val:Number = Number(sourceString);

如果sourceString不是String的有效Number表示,则val将为NaN(不是数字)...您已根据该值检查该值isNaN ...因为val == NaN会因为一个无法理解的原因而返回false ...您可以使用int(val) == val来检查它是否为整数值... < / p>

格尔茨

back2dos

答案 7 :(得分:0)

function isANumber(__str:String):Boolean
{
    return !isNaN(Number(__str));
}

答案 8 :(得分:0)

将此功能放入任何只需要保留数字的函数中
joy_edit1是TextInput对象(spark)

//is a number check
if( isNaN(Number(joy_edit1.text)) ) {
  joy_edit1.text = "";
  return void;
}

答案 9 :(得分:0)

您应该使用Adobe的原生解决方案:

parseIntparseFloat方法。

另请阅读isNaN说明:

  

如果值为NaN(不是数字),则返回true。 isNaN()函数   用于检查数学表达式是否计算   成功地到了一个数字。 isNaN()最常见的用途是检查   从 parseInt ()和 parseFloat ()函数返回的值。该   NaN值是表示的Number数据类型的特殊成员   一个值是&#34;而不是一个数字。&#34;

这是一个简单的实现:

function isANumber(value:String):Boolean {
    return !isNaN(parseFloat(value));
}

答案 10 :(得分:-1)

typeof('7') == 'string'
typeof(7) == 'number'

这有帮助吗?