flex - saber - comprobacion de sumas de tres sumandos
La forma más sencilla de comprobar si una cadena convertida en un número es realmente un número en actionscript (11)
No estoy seguro si esto tiene sentido, pero necesito verificar si un valor de servidor devuelto es realmente un número. En este momento obtengo TODOS los valores numéricos devueltos como cadenas, es decir, ''7'' en lugar de 7.
¿Cuál es la forma más sencilla de verificar si los valores de cadena se pueden convertir realmente a números?
Aquí hay otra forma de verificar si el valor se puede convertir a un número:
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)))
}
esto rastreará a continuación:
2 true
3 true
string false
Debe usar la solución nativa de Adobe:
métodos parseInt y parseFloat .
Lea también la descripción de isNaN:
Devuelve verdadero si el valor es NaN (no es un número). La función isNaN () es útil para verificar si una expresión matemática se evalúa exitosamente como un número. El uso más común de isNaN () es verificar el valor devuelto por las funciones parseInt () y parseFloat (). El valor NaN es un miembro especial del tipo de datos Número que representa un valor que "no es un número".
Aquí hay una implementación simple:
function isANumber(value:String):Boolean {
return !isNaN(parseFloat(value));
}
La manera más fácil de hacer esto es convertir la cadena en un Número y probar para ver si es NaN. Si observa la referencia de Flex API, la función Number () de nivel superior indica que devolverá NaN si la cadena que se pasa al método no se puede convertir a un Número.
Afortunadamente, Flex (tipo de) hace esto por usted, con la función isNaN (). Todo lo que necesitas hacer es:
var testFlag:Boolean = isNaN( someStringThatMightBeANumber );
Si testFlag
es falso, la cadena se puede convertir a un número, de lo contrario no se puede convertir.
Editar
Lo anterior no funcionará si se compila en modo estricto. En cambio, primero deberá convertir a Número y luego verificar NaN, de la siguiente manera:
var testFlag:Boolean = isNaN( Number( someStringThatMightBeANumber ) );
La mayoría de las respuestas sobre esta pregunta tienen un gran defecto en ellas. Si toma Número (nulo) o Número (indefinido) o Número (""), todos devolverán 0 y evaluarán como "es un número". Pruebe algo como esto en su lugar:
function isANumber( val:* ):Boolean {
return !(val === null || val === "" || isNaN(val));
}
No lo he probado, pero esto debería funcionar:
if( isNaN(theString) ) {
trace("it is a string");
} else {
trace("it is a number");
}
Si está utilizando AS3 y / o el modo estricto (como lo señaló back2dos), primero deberá convertir al número para que se compile:
if( isNaN(Number(theString)) ) {
trace("it is a string");
} else {
trace("it is a number");
}
Pon esto en cualquier función donde quieras que solo queden los números
joy_edit1 es un objeto TextInput (chispa)
//is a number check
if( isNaN(Number(joy_edit1.text)) ) {
joy_edit1.text = "";
return void;
}
Puedes notar eso en actionscript:
trace(int(''7'')); // will return 7
y
trace(int(''a'')); // will return 0
Entonces, excepto por ceros, en realidad puedes ahora si una cadena es un número o no
Ruta RegExp:
function stringIsAValidNumber(s: String) : Boolean {
return Boolean(s.match(/^[0-9]+.?[0-9]+$/));
}
esto intentará convertir su String
a un Number
, que esencialmente es un número de punto flotante de 64 bits:
var val:Number = Number(sourceString);
si sourceString
no es una representación de String
válida de un Number
, val será NaN
(no un número) ... usted tiene control contra ese valor con isNaN
... porque val == NaN
devolverá falso por un motivo que no puede Entiendo muy bien ... puedes usar int(val) == val
para verificar si es un valor integral ...
greetz
back2dos
function isANumber(__str:String):Boolean
{
return !isNaN(Number(__str));
}
typeof(''7'') == ''string''
typeof(7) == ''number''
¿Eso ayuda?