Wie konvertiere ich in JavaScript eine Zeichenkette in eine ganze Zahl?
Die Rückgabe von "Not A Number" ist ein wenig aggressiv für einen Umzugswagen, finden Sie nicht auch?
Wie konvertiere ich in JavaScript eine Zeichenkette in eine ganze Zahl?
Meiner Meinung nach deckt keine Antwort alle Randfälle ab, da das Parsen eines Floats zu einem Fehler führen sollte.
function parseInteger(value) {
if(value === '') return NaN;
const number = Number(value);
return Number.isInteger(number) ? number : NaN;
}
parseInteger("4") // 4
parseInteger("5aaa") // NaN
parseInteger("4.33333") // NaN
parseInteger("aaa"); // NaN
Die Rückgabe von "Not A Number" ist ein wenig aggressiv für einen Umzugswagen, finden Sie nicht auch?
Essayez str - 0
zu konvertieren string
a number
.
> str = '0'
> str - 0
0
> str = '123'
> str - 0
123
> str = '-12'
> str - 0
-12
> str = 'asdf'
> str - 0
NaN
> str = '12.34'
> str - 0
12.34
Hier sind zwei Links zum Vergleich der Leistung verschiedener Methoden zur Konvertierung von String in Int
@AlexanderYau, per dies doc die '1'
wird umgewandelt in 1
von ToNumber
entonces 1 - 0
wäre 1
Google gab mir diese Antwort als Ergebnis, also...
Ich brauchte eigentlich zu "speichern" eine Zeichenfolge als eine ganze Zahl, für eine Bindung zwischen C und JavaScript, so dass ich die Zeichenfolge in einen Integer-Wert konvertieren:
/*
Examples:
int2str( str2int("test") ) == "test" // true
int2str( str2int("t€st") ) // "t¬st", because "€".charCodeAt(0) is 8364, will be AND'ed with 0xff
Limitations:
max 4 chars, so it fits into an integer
*/
function str2int(the_str) {
var ret = 0;
var len = the_str.length;
if (len >= 1) ret += (the_str.charCodeAt(0) & 0xff) << 0;
if (len >= 2) ret += (the_str.charCodeAt(1) & 0xff) << 8;
if (len >= 3) ret += (the_str.charCodeAt(2) & 0xff) << 16;
if (len >= 4) ret += (the_str.charCodeAt(3) & 0xff) << 24;
return ret;
}
function int2str(the_int) {
var tmp = [
(the_int & 0x000000ff) >> 0,
(the_int & 0x0000ff00) >> 8,
(the_int & 0x00ff0000) >> 16,
(the_int & 0xff000000) >> 24
];
var ret = "";
for (var i=0; i<4; i++) {
if (tmp[i] == 0)
break;
ret += String.fromCharCode(tmp[i]);
}
return ret;
}
Das ist eine interessante Art, 4-Byte-Werte zu speichern und abzurufen. Sie beantwortet nicht die herkömmliche Interpretation der Frage, wie man eine String-Darstellung einer Zahl in einen Integer-Wert umwandelt. Unabhängig davon, Ihr int2str
Funktion stoppt, wenn ein Byte 0 ist, was ein zulässiges Element innerhalb des Wertes sein könnte, so dass die if
... break
sollte entfernt werden, damit ein vollständiger 4-Byte-Wert zurückgegeben wird.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
7 Stimmen
Auf dieser Seite finden Sie unten eine gute Tabelle, in der verschiedene Umrechnungsmethoden verglichen werden: medium.com/@nikjohn/
1 Stimmen
In Ermangelung einer Klärung durch den Auftraggeber könnte diese Frage im Sinne einer Umwandlung interpretiert werden jede Zeichenkette in eine Zahl umzuwandeln, d.h. "Hund" in eine Zahl zu verwandeln (was natürlich auch möglich ist).
2 Stimmen
Er hat den Köder geschluckt: @DanielCarrera und doch hat niemand hier die Frage in diesem Sinne interpretiert. Wahrscheinlich, weil sie, wenn das das Ziel gewesen wäre, sehr wahrscheinlich ganz anders formuliert worden wäre. Schließlich wird das Verfahren, das dabei zum Einsatz kommt ("Hashing"), nicht als "Hash" bezeichnet und wurde auch nie als " Konvertierung zu einer ganzen Zahl".
0 Stimmen
Para Nicht-Standard Standort (Bsp.
123456789.123
es123456789,12
infr-FR
) siehe diese Diskussion0 Stimmen
Um Zahlen mit anderen Zahlensystemen (z. B. Persisch/Farsi oder Arabisch) zu analysieren, siehe diese Stelle y diese Stelle .