不确定这是否有意义,但我需要检查返回的服务器值是否实际上是一个数字。现在我将所有数字值作为字符串返回 即'7'而不是7。
检查字符串值是否可以实际转换为数字的最简单方法是什么?
答案 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的原生解决方案:
另请阅读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'
这有帮助吗?