TypeScript konwertujący Łańcuch znaków na liczbę

Ktoś może podpowie jak zamienić łańcuch znaków na liczbę w maszynopisie?

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);

Update: Zrobiłem kilka dodatkowych zagadek, najlepszy sofar jaki wymyśliłem: var aNumber: liczba = ( "1") * 1;

Sprawdzanie, czy łańcuch jest numeryczny, można znaleźć tutaj: w maszynopisie, jak sprawdzić, czy łańcuch jest numeryczny.

 406
Author: Community, 2013-02-03

7 answers

Możesz użyć funkcji parseInt lub parseFloat lub po prostu użyć operatora uniary +:

var x = "32";
var y = +x; // y: number
 565
Author: Ryan Cavanaugh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-03 01:19:52

Sposobem na to jest:

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

Jako odpowiedź tutaj: https://stackoverflow.com/a/23440948/2083492

 621
Author: Philip Miglinci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:28

Dla naszych kolegów:

W szablonie , Number(x) i parseInt(x) wyrzuca błąd, i +x nie ma żadnego efektu. Poprawny casting będzie x*1 lub x/1.

 51
Author: Blauhirn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-21 10:19:57

Tłumacząc to, co powiedział Ryan, TypeScript obejmuje idiomy JavaScript w ogóle.

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()

Wszystkie interesujące szczegóły w JavaScript Type Conversion .

 36
Author: user2040786,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-05 13:43:38

Jak pokazują inne odpowiedzi tutaj, istnieje wiele sposobów na konwersję:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')
[[10]}chciałbym jednak wspomnieć o jeszcze jednej rzeczy na parseInt.

Podczas używania parseInt, sensowne jest, aby zawsze podawać parametr radix. Dla konwersji dziesiętnej, czyli 10. Jest to wartość domyślna dla parametru, dlatego Może zostać pominięta. Dla kodu binarnego jest to 2 i 16 dla kodu szesnastkowego. Właściwie każdy radix między 2 A 36 włącznie działa.

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

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

Funkcja parseInt parsuje łańcuchy, aby przekonwertować je na liczby. W niektórych implementacjach JS parseInt parsuje zera wiodące jako ósemkowe:

Chociaż zniechęcony przez ECMAScript 3 i zabroniony przez ECMAScript 5, wiele implementacji interpretuje ciąg liczbowy zaczynający się od 0 jako ósemkę. Poniższe mogą mieć wynik ósemkowy lub wynik dziesiętny. zawsze podaj radix, aby uniknąć tego zawodnego zachowania.

- MDN

Fakt, że kod staje się jaśniejszy, jest miłym efektem ubocznym określenia parametru radix.

Ponieważ parseFloat parsuje tylko wyrażenia liczbowe w radix 10, nie ma tu potrzeby stosowania parametru radix.

Więcej na ten temat:

 22
Author: Fabian Lauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-10 19:31:22

Możesz wykonać jeden z następujących sposobów.

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 
 13
Author: Labib Hus'sain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-21 05:51:09

Istnieją wbudowane funkcje takie jak parseInt(), parseFloat() i Number() w maszynopisie, możesz ich użyć.

 2
Author: Mighty God Loki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 08:16:05