2013-02-02 189 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