2012-05-23 11 views

Respuesta

55

Utilice la función javascript parseInt.

number = parseInt(stringToParse, 10); 

La referencia es here.

Recuerde, CoffeeScript es sólo javascript después de que ha compilado

+1

sí Terminé haciendo esto gracias – nachonachoman

+4

Tenga cuidado con los números octales cuando use parseInt. – Corkscreewe

+5

Especifique siempre la [raíz] (http://en.wikipedia.org/wiki/Radix), p.'parseInt (stringToParse, 10)' – Stefan

33

se puede utilizar el menor operador menos evidente, más mágico, teclado intensivo +:

+"158" 
+0

¡eso es genial! No puedo encontrar ningún documento sobre esta característica, ¿dónde aprendiste eso? – nachonachoman

+5

No es una función de coffeescript, es un operador unario de JavaScript en el sentido de más/menos al frente de un número. Tenga cuidado de que pueda tener problemas muy rápido al usar esto: 'a = true; + a ++ + + (++ a) ' – Corkscreewe

+0

¿La alerta (id +" 123 ") y la alerta (id +" 123 ") arrojan resultados diferentes? – nachonachoman

2

Todavía no se ha documentado en el manual oficial, pero parece que los operadores de elenco también funcionan:

myString = "12323" 
myNumber = (Number) myString 
+2

No es un operador de conversión, está interpretando' (Number) 'como una función (ignorando los parens) con' myString 'como su argumento. Por lo tanto, compila 'Number (myString)', que tiene el efecto deseado. –

+0

Por supuesto. Gracias por la aclaración. – mzedeler

2

No recomiendo el uso de parseInt ya que está mal en un caso - que encontré:

parseInt('09asdf', 10); 
#> return 09 which is not correct at all. It should return NaN 

La respuesta correcta debería ser la de @Corkscreewe. Y hay otro:

cleanInt = (x) -> 
    x = Number(x) 
    (if x >= 0 then Math.floor(x) else Math.ceil(x)) 

Aprender de https://coderwall.com/p/cbabhg

0

Esta es una forma sencilla para su necesidad. NaN será devuelto como se esperaba.

parseInt("09asdf".match(/^\d+$/)?[0] ? NaN, 10) 
2

Basado en el enlace, se menciona en nXqd's answer, también se puede convertir implícitamente una cadena multiplicándolo por 1:

'123' * 1 // 123 

Se comporta correctamente para la entrada incorrecta:

'123abc' * 1 // NaN 

Usted puede hacer esto también con flotadores:

'123.456' * 1 // 123.456 
0

stringToConvernt = "$13,452,334.5" 
 
output = Number(stringToConvernt.replace(/[^0-9\.]/g, '')) 
 
console.log(output) 
 
//The output is `13452334.5`.

+0

última línea es incorrecta: 3 'log.console -> console.log' – Illuminator

1

Siempre estoy usando OR bit a bit para convertir cadenas en enteros.

"99.999" | 0 // returns 99 
Cuestiones relacionadas