【发布时间】:2011-06-28 22:43:36
【问题描述】:
我怎样才能简单地检查类型为int 或uint 的返回值是否为数字?
【问题讨论】:
标签: flash actionscript-3 adobe air
我怎样才能简单地检查类型为int 或uint 的返回值是否为数字?
【问题讨论】:
标签: flash actionscript-3 adobe air
简单:
if(_myValue is Number)
{
fire();
}// end if
[更新]
请记住,如果_myValue 的类型为int 或uint,那么(_myValue is Number) 也将等同于true。如果您想知道_myValue 是不是整数(int)或无符号整数(uint)的数字,也就是浮点数,那么您可以简单地修改条件如下:
(_myValue is Number && !(_myValue is int) && !(_myValue is uint))
我们来看一个例子:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
var number1:Object = 1; // int
var number2:Object = 1.1; // float
var number3:Object = 0x000000; // uint
trace(number1 is Number); // true
trace(number2 is Number); // true
trace(number3 is Number); // true
trace(number1 is Number && !(number1 is int) && !(number1 is uint)); // false
trace(number2 is Number && !(number2 is int) && !(number2 is uint)); // true
trace(number3 is Number && !(number3 is int) && !(number3 is uint)); // false
}
}
}
【讨论】:
var isNumeric:Boolean = !isNaN(Number(value));。这将处理任何数字值,但也会尝试将字符串转换为数字。如果它是一个数字或者可以转换为一个数字,那么它就是一个数值。无需使用 is 运算符显式测试 Number、int 和 uint 类型。
如果您只想知道 myValue 是否为 数字类型之一(Number、int、uint),您可以按照 Taurayi 的建议检查 (_myValue is Number)。
如果您也想知道 _myValue 是否为 数字字符串(如“6320”或“5.987”),请使用:
if (!isNaN(Number(_myValue)))
{
fire();
}
它使用Number(_myValue) 将_myValue 转换为Number 类。如果Number 无法将其转换为有用的数字,它将返回NaN,因此我们使用!isNaN() 来确保返回的值不是“不是数字”。
对于Number 类型的任何变量(只要它的值不是NaN)、int、uint 以及包含数字的有效表示的字符串,它将返回 true。
【讨论】:
如果您希望检查文本字段的输入,这些方法可能会出现问题,该文本字段“始终”是一个字符串。如果你有一个带有“123”的字符串并且用“123”检查是数字,你会得到一个假的。所以 Number("123") 会给出 true,但 Number("lalala") 也会同样如此(尽管结果是 NaN 会告诉你 NaN 是 Number (true)。
要使用字符串,您可以这样做:
var s:String = "1234";
String(Number(s)) == String(s);
--True
var s:String = "lalala";
String(Number(s)) == String(s);
--False
【讨论】: