2500 Stimmen

Wie wandelt man in JavaScript eine Zeichenkette in eine ganze Zahl um?

Wie konvertiere ich in JavaScript eine Zeichenkette in eine ganze Zahl?

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".

0voto

Ich fügte nur ein Plus(+) vor der Zeichenfolge ein, und das war die Lösung!

+"052254" //52254

Hoffentlich hilft es ;)

0 Stimmen

Dies wurde bereits in einer früheren Antwort behandelt, Nosrednas Antwort .

0voto

BanksySan Punkte 25663

Eine andere Möglichkeit ist das doppelte XOR des Wertes mit sich selbst:

var i = 12.34;
console.log('i = ' + i);
console.log('i  i  i = ' + (i ^ i ^ i));

Dies wird ausgegeben:

i = 12.34
i  i  i = 12

0 Stimmen

Vielleicht sollten Sie Ihre Antwort ausführlicher formulieren? Warum funktioniert das? (Aber *********** ohne *********** "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).

-1voto

shreyasm-dev Punkte 2457

Dies ist (wahrscheinlich) nicht die beste Lösung für Parsing eine ganze Zahl, aber wenn Sie eine "extrahieren" müssen, zum Beispiel:

"1a2b3c" === 123
"198some text2hello world!30" === 198230
// ...

würde dies funktionieren (nur für ganze Zahlen):

var str = '3a9b0c3d2e9f8g'

function extractInteger(str) {
  var result = 0;
  var factor = 1

  for (var i = str.length; i > 0; i--) {
    if (!isNaN(str[i - 1])) {
      result += parseInt(str[i - 1]) * factor
      factor *= 10
    }
  }

  return result
}

console.log(extractInteger(str))

Natürlich würde dies auch für das Parsen einer Ganzzahl funktionieren, wäre aber langsamer als andere Methoden.

Man könnte auch ganze Zahlen mit dieser Methode analysieren und zurückgeben NaN wenn die Zeichenkette keine Zahl ist, aber ich wüsste nicht, warum man das tun sollte, da dies auf parseInt intern und parseInt ist wahrscheinlich schneller.

var str = '3a9b0c3d2e9f8g'

function extractInteger(str) {
  var result = 0;
  var factor = 1

  for (var i = str.length; i > 0; i--) {
    if (isNaN(str[i - 1])) return NaN
    result += parseInt(str[i - 1]) * factor
    factor *= 10
  }

  return result
}

console.log(extractInteger(str))

-1voto

Majid Nayyeri Punkte 237
function doSth(){
  var a = document.getElementById('input').value;
  document.getElementById('number').innerHTML = toNumber(a) + 1;
}
function toNumber(str){
  return +str;
}

<input id="input" type="text">
<input onclick="doSth()" type="submit">
<span id="number"></span>

-1voto

Alle oben genannten Punkte sind richtig. Bitte vergewissern Sie sich vorher, dass es sich um eine Zahl in einem String handelt, indem Sie "typeot x === 'Zahl'" eingeben, sonst wird NaN zurückgegeben

 var num = "fsdfsdf242342";
 typeof num => 'string';

 var num1 = "12423";
 typeof num1 => 'number';
 +num1 = > 12423`

0 Stimmen

In Knoten v8.5.0, var num1 = "12423"; typeof num1; gibt zurück. string .

1 Stimmen

Wenn Ihr Ziel darin besteht, Folgendes zu vermeiden NaN dann ist die einfache Lösung testen Sie den Wert, den Sie für NaN : var v = whatever-conversion-you-prefer(s); if (isNaN(v)) ...handle the error... else ...use v... .

CodeJaeger.com

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.

Powered by:

X