2013-02-02 146 views
284

任何人都有关于如何将字符串转换为数字的建议?TypeScript将字符串转换为数字

var aNumber : number = "1"; // --> Error 

// Could this be done? 
var defaultValue = 0; 
var aNumber : number = "1".toInt32(defaultValue); 

// Or .. 
var defaultValue = 0; 
var aNumber : number = StringToInt("1", defaultValue); 

更新: 我做了一些额外的令人费解的,最好的SOFAR我想出: VAR aNumber的:数=( “1”)* 1;

检查字符串是否为数字在这里回答:In Typescript, How to check if a string is Numeric

+3

'变种aNumber的= “1”;' –

+0

的[在打字稿,如何检查一个字符串是否是数值]可能的复制(http://stackoverflow.com/questions/23437476/in-typescript如何检查是否字符串是数字) –

回答

378

可以使用parseIntparseFloat功能,或者干脆用一元+操作:

var x = "32"; 
var y = +x; // y: number 
+3

小提示:parseInt(空)返回NaN但+空返回0 –

32

简释什么Ryan说,打字稿拥抱一般JavaScript词汇。

var n = +"1"; // the unary + converts to number 
var b = !!"2"; // the !! converts truthy to true, and falsy to false 
var s = ""+3; // the ""+ converts to string via toString() 

JavaScript Type Conversion所有有趣的深入细节。

489

打字稿办法做到这一点是:

Number('1234') // 1234 
Number('9BX9') // NaN 

如下回答:https://stackoverflow.com/a/23440948/2083492

+0

注意:您可以使用'isNaN'函数检查NaN。 –

+2

请注意,这不会工作:let value:number = valueAsString; – yonexbat

+0

我认为新号码(“1234”)。valueOf()实际上是我们所期待的 - – chrismarx

29

对于我们的同胞角的用户:

在一个模板Number(x)parseInt(x)抛出错误,并且+x不起作用。有效的铸造将是x*1x/1

+0

谢谢..只有这个对我有用 – Murat

+0

作品像一个魅力。 –

+0

真是太棒了!正如你在HTML + x中所说的,根本不会转换为数字 –

0

在Typescript中有parseInt(),parseFloat()和​​等内置函数,您可以使用这些函数。

12

如通过其他的答案在这里,有很多种方法来进行转换:

Number('123'); 
+'123'; 
parseInt('123'); 
parseFloat('123.45') 

我想提一件事上parseInt虽然。

使用parseInt时,总是传递基数参数。对于十进制转换,即10。这是该参数的默认值,这就是为什么它可以省略可以。对于二进制,对于十六进制是216。实际上,2和36之间的任何基数都可以工作。

parseInt('123')   // 123 (don't do this) 
parseInt('123', 10)  // 123 (much better) 

parseInt('1101', 2)  // 13 
parseInt('0xfae3', 16) // 64227 

parseInt函数分析字符串以将它们转换为数字。在一些JS实现,parseInt解析前导零为八进制:

虽然ECMAScript的3劝阻和禁止通过的ECMAScript 5,很多实现与解读领先的0八进制开头的数字串。以下可能有八进制结果,或者可能有十进制结果。 总是指定一个基数来避免这种不可靠的行为。

- MDN

代码变得更清晰的事实是确定的基数参数的很好的副作用。

由于parseFloat仅以10为基数分析数值表达式,因此在此不需要使用基数参数。

更多内容:

6

您可以按照以下任一方式。

var str = '54'; 

var num = +str; //easy way by using + operator 
var num = parseInt(str); //by using the parseInt operation