web-dev-qa-db-de.com

Holen Sie sich die ersten Ganzzahlen in einer Zeichenfolge mit JavaScript

Ich habe eine Zeichenfolge in einer Schleife und für jede Schleife ist sie mit Texten gefüllt, die wie folgt aussehen:

"123 hello everybody 4"
"4567 stuff is fun 67"
"12368 more stuff"

Ich möchte nur die ersten Zahlen bis zu dem Text in der Zeichenfolge abrufen, und ich kenne die Länge natürlich nicht.

Danke im Voraus!

30
Fred

Wenn die Nummer am Anfang der Zeichenfolge steht:

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

Wenn es irgendwo im String ist:

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

Und für eine Zahl zwischen den Zeichen:

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

[ Nachtrag

Ein regulärer Ausdruck, der mit allen Zahlen in einer Zeichenfolge übereinstimmt:

"4567 stuff is fun4you 67".match(/^\d+|\d+\b|\d+(?=\w)/g); //=> ["4567", "4", "67"]

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

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

Einschließlich schwimmer:

"4567 stuff is fun4you 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 die Zeichenfolge keine Nummer enthält, verwenden Sie:

( "stuff is fun"
   .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
   .map(function (v) {return +v;}); //=> []

So erhalten Sie die Start- oder Endnummern der Zeichenfolge 4567 stuff is fun4you 2.12 67" 

// start number
var startingNumber = ( "4567 stuff is fun4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
  .map(function (v) {return +v;}).shift(); //=> 4567

// end number
var endingNumber = ( "4567 stuff is fun4you 2.12 67"
  .match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [] )
  .map(function (v) {return +v;}).pop(); //=> 67
49
KooiInc
var str = "some text and 856 numbers 2";
var match = str.match(/\d+/);
document.writeln(parseInt(match[0], 10));

Wenn die Zeichenfolgen mit einer Zahl beginnen (möglicherweise vorangestelltes Leerzeichen), reicht die einfache Funktion parseInt(str, 10) aus. parseInt überspringt den führenden Leerraum. 

10 ist notwendig, da andernfalls Zeichenfolgen wie 08 in 0 konvertiert werden (parseInt berücksichtigt in den meisten Implementierungen Zahlen, die mit 0 beginnen, als Oktal).

43
Eugene Morozov

Wenn Sie ein int wollen, brauchen Sie nur parseInt(myString, 10). (Der 10 steht für Basis 10; andernfalls versucht JavaScript möglicherweise, eine andere Basis wie 8 oder 16 zu verwenden.)

5
Sophie Alpert

Verwenden Sie reguläre Ausdrücke:

var re = new RegExp(/^\d+/); //starts with digit, one or more
var m = re.exec("4567 stuff is fun 67");
alert(m[0]); //4567

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

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

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

alles ohne die ersten Ziffern entfernen .

1
simhumileco