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

Apache flex 检查转换为数字的字符串是否实际上是actionscript中的数字的最简单方法,apache-flex,flash,Apache Flex,Flash,不确定这是否有意义,但我需要检查返回的服务器值是否实际上是一个数字。现在我得到了所有以字符串形式返回的数值 即“7”而不是“7” 检查字符串值是否可以转换为数字的最简单方法是什么?您可以注意到,在actionscript中: trace(int('7')); // will return 7 及 所以除了零,你现在可以知道字符串是否是数字 typeof('7') == 'string' typeof(7) == 'number' 这有帮助吗?最简单的方法是将字符串转换为数字,然后测试它是否为

不确定这是否有意义,但我需要检查返回的服务器值是否实际上是一个数字。现在我得到了所有以字符串形式返回的数值 即“7”而不是“7”


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

您可以注意到,在actionscript中:

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

所以除了零,你现在可以知道字符串是否是数字

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

这有帮助吗?

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

幸运的是,Flex(某种程度上)通过isNaN()函数为您做到了这一点。您需要做的只是:

var testFlag:Boolean = isNaN( someStringThatMightBeANumber );
如果
testFlag
为false,则可以将字符串转换为数字,否则无法转换

编辑

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

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

尚未对此进行测试,但应该可以:

if( isNaN(theString) ) {
   trace("it is a string");
} else {
    trace("it is a number");
}
如果您使用的是AS3和/或strict模式(正如back2dos所指出的),则需要首先将其转换为number,以便编译:

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

这将尝试将您的
字符串
转换为
数字
,该数字本质上是一个64位浮点数:

var val:Number = Number(sourceString);
如果
sourceString
不是
Number
的有效
String
表示形式,则val将是
NaN
(不是数字)。。。您必须使用
isNaN
检查该值。。。因为
val==NaN
将返回false,原因是无法完全理解。。。您可以使用
int(val)=val
检查它是否为整数值

格里茨


back2dos

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

function isANumber(__str:String):Boolean
{
    return !isNaN(Number(__str));
}
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
RegExp路径:

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

将其放入任何只想保留数字的函数中
joy_edit1是文本输入对象(spark)


关于这个问题的大多数答案都有一个重大缺陷。如果您使用数字(null)或数字(未定义)或数字(“”),则all将返回0并计算为“is a Number”。请尝试以下方法:

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

您应该使用Adobe的本机解决方案:

和方法

另请阅读isNaN说明:

如果值为NaN(不是数字),则返回true。isNaN()函数 用于检查数学表达式是否求值 成功地找到一个数字。isNaN()最常用的用法是检查 从parseInt()和parseFloat()函数返回的值。这个 NaN值是表示的数字数据类型的特殊成员 “不是数字”的值

下面是一个简单的实现:

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

isNaN的参数必须是浮点。。。所以这将在严格模式下抛出编译器错误…我想对于as3严格模式是真的,尽管没有指定。虽然你不应该投反对票,伙计-我的意思是,你在这里投了3个帖子。就写一条评论,就这样吧。不是真的,因为它是关于确定字符串是否是数字的。。。顺便说一句,这是因为AS3不推荐的,因为它提供了“is”操作符(AS2有“instanceof”),属性“constructor”或“flash.utils.getQualifiedClassName”,好的,然后我们只需要先转换为数字。我将进行适当的编辑。我对此进行了简要的试验。您似乎可以使用“Number(someString)is Number”来执行检查?请记住,
isNaN(“”==false
,可能是因为空字符串的计算结果为0.OMG!有一个简单的
isNan
函数!不要想太多!:)您应该检查StringUtil.trim(val)==“”以覆盖空格的情况。如果字符串包含带有随机字符的数字,此方法也将返回true,例如:6s。
function isANumber( val:* ):Boolean {
    return !(val === null || val === "" || isNaN(val));
}
function isANumber(value:String):Boolean {
    return !isNaN(parseFloat(value));
}