53 Stimmen

Holen Sie sich die ersten Ganzzahlen in einem String mit JavaScript

Ich habe einen String in einer Schleife und für jede Schleife wird er mit Texten wie diesen gefüllt:

"123 hallo alle zusammen 4"
"4567 Sachen machen Spaß 67"
"12368 mehr Sachen"

Ich möchte nur die ersten Zahlen bis zum Text im String abrufen und ich kenne natürlich nicht die Länge.

Vielen Dank im Voraus!

84voto

KooiInc Punkte 111454

Wenn die Zahl am Anfang des Strings steht:

("123 hallo alle 4").replace(/(^\d+)(.+$)/i,'$1'); //=> '123'

Wenn sie irgendwo im String steht:

(" hallo 123 alle 4").replace( /(^.+)(\w\d+\w)(.+$)/i,'$2'); //=> '123'

Und für eine Zahl zwischen Zeichen:

("hallo123alle 4").replace( /(^.+\D)(\d+)(\D.+$)/i,'$2'); //=> '123'

[Zusatz]

Ein regulärer Ausdruck, um alle Zahlen in einem String abzugleichen:

"4567 Spaß ist gut4you 67".match(/^\d+|\d+\b|\d+(?=\w)/g); //=> ["4567", "4", "67"]

Sie können das resultierende Array einer Array von Zahlen zuordnen:

"4567 Spaß ist gut4you 67"
  .match(/^\d+|\d+\b|\d+(?=\w)/g)
  .map(function (v) {return +v;}); //=> [4567, 4, 67]

Einschließlich Floats:

"4567 Spaß ist gut4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g)
  .map(function (v) {return +v;}); //=> [4567, 4, 2.12, 67]

Wenn die Möglichkeit besteht, dass der String keine Zahlen enthält, verwenden Sie:

( "Spaß ist gut"
   .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
   .map(function (v) {return +v;}); //=> []

Also, um die Anfangs- oder Endzahlen des Strings 4567 Spaß ist gut4you 2.12 67" abzurufen

// Anfangsnummer
var startingNumber = ( "4567 Spaß ist gut4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
  .map(function (v) {return +v;}).shift(); //=> 4567

// Endnummer
var endingNumber = ( "4567 Spaß ist gut4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
  .map(function (v) {return +v;}).pop(); //=> 67

55voto

Eugene Morozov Punkte 13864
var str = "some text and 856 numbers 2";
var match = str.match(/\d+/);
document.writeln(parseInt(match[0], 10));

Wenn der String mit einer Zahl beginnt (vielleicht vorangestellt von Leerzeichen), reicht einfaches parseInt(str, 10) aus. parseInt überspringt führende Leerzeichen.

10 ist notwendig, da ansonsten ein String wie 08 in 0 umgewandelt wird (parseInt betrachtet in den meisten Implementierungen Zahlen, die mit 0 beginnen, als oktal).

10voto

Sophie Alpert Punkte 133000

Wenn Sie eine Ganzzahl möchten, verwenden Sie einfach parseInt(myString, 10). (Die 10 steht für Basis 10; Andernfalls könnte JavaScript versuchen, eine andere Basis wie 8 oder 16 zu verwenden.)

6voto

simhumileco Punkte 26451

Diese replace Methode mit einem einfachen regulären Ausdruck ([^\d].*):

'123 your 1st string'.replace( /[^\d].*/, '' );
// output: "123"

entfernt alles außer den ersten Ziffern.

3voto

Spikolynn Punkte 3799

Verwenden Sie reguläre Ausdrücke:

var re = new RegExp(/^\d+/); //beginnt mit Ziffer, eins oder mehr
var m = re.exec("4567 stuff is fun 67");
alert(m[0]); //4567

m = re.exec("stuff is fun 67");
alert(m); // null

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