不确定是否理解清楚,但我需要检查服务器返回的值是否实际上是一个数字。目前,我获取所有数字值都作为字符串返回,比如 '7' 而不是 7。
最简单的方法是如何检查字符串值是否可以转换为数字?
不确定是否理解清楚,但我需要检查服务器返回的值是否实际上是一个数字。目前,我获取所有数字值都作为字符串返回,比如 '7' 而不是 7。
最简单的方法是如何检查字符串值是否可以转换为数字?
最简单的方法是将字符串转换为数字,然后测试它是否为NaN。如果您查看Flex API参考文档,顶级Number()函数说明如果传递给该方法的字符串无法转换为数字,则会返回NaN。
幸运的是,Flex(有点)为你做到了这一点,使用isNaN()函数即可。你所需要做的就是:
var testFlag:Boolean = isNaN( someStringThatMightBeANumber );
如果testFlag
为false,则该字符串可以转换为数字,否则不能转换。
编辑
如果在严格模式下编译,上述代码将无法正常工作。您需要先将其转换为数字,然后再检查是否为NaN,方法如下:
var testFlag:Boolean = isNaN( Number( someStringThatMightBeANumber ) );
我没有测试过,但应该会起作用:
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");
}
这个问题的大部分答案都有一个主要缺陷。如果你使用 Number(null)、Number(undefined) 或者 Number(""),它们都会返回 0 并且被认为是 "数字"。相反,可以尝试使用以下代码:
function isANumber( val:* ):Boolean {
return !(val === null || val === "" || isNaN(val));
}
正则表达式路径:
function stringIsAValidNumber(s: String) : Boolean {
return Boolean(s.match(/^[0-9]+.?[0-9]+$/));
}
isNan
函数可以解决这个问题!不要想太难了! :) - Jalal这里有另一种检查值是否可以转换为数字的方法:
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
function isANumber(__str:String):Boolean
{
return !isNaN(Number(__str));
}
trace(int('7')); // will return 7
并且
trace(int('a')); // will return 0
所以除了零以外,你现在可以知道一个字符串是否是数字了
这将尝试将您的String
转换为一个Number
,它本质上是一个64位浮点数:
var val:Number = Number(sourceString);
sourceString
不是一个有效的 Number
字符串表示,那么 val 将会是 NaN
(不是数字)... 你需要使用 isNaN
来检查该值 ... 因为 val == NaN
会返回 false 而无法理解原因 ... 你可以使用 int(val) == val
来检查它是否为整数值...
问候
back2dos
在任何你想要只保留数字的函数中添加以下代码:
joy_edit1是一个TextInput对象(Spark)
//is a number check
if( isNaN(Number(joy_edit1.text)) ) {
joy_edit1.text = "";
return void;
}
您应该使用Adobe的本地解决方案:
还要阅读isNaN的描述:
如果值为NaN(不是数字),则返回true。 isNaN()函数用于检查数学表达式是否成功评估为数字。 isNaN()最常见的用途是检查从parseInt()和parseFloat()函数返回的值。 NaN值是Number数据类型的特殊成员,表示一个“不是数字”的值。
这里是一个简单的实现:
function isANumber(value:String):Boolean {
return !isNaN(parseFloat(value));
}
isNaN("") == false
,这可能是因为空字符串会被解释为零。 - Kyle Delaney