2016-08-07 47 views
0

Ich habe eine Funktion geschrieben, die ich in eine Zeichenfolge aufnehmen und dann eine Zeichenfolge zurückgeben soll, die nur die Anzahl Zeichen aus der ursprünglichen Zeichenfolge enthält.Funktion zum Extrahieren von Zahlen nur aus einer Zeichenfolge

Es
function pureNumbers() { 
     var result; 
     for (var i = 0; i < phoneNumber.length; i++) { 
     if (Number(phoneNumber[i]) !== NaN) { 
      result ? result = result + phoneNumber[i] : result = phoneNumber[i] 
     } 
     } 
     return result; 
    } 

pureNumbers('(123) 456-7890') 

Wunschergebnis:

result: '1234567890' 

Was ich eigentlich ist:

result: 'undefined(123) 456-7890' 

ich weiß, gibt es zwei Probleme hier (möglicherweise mehr).

  1. Die undefined am Anfang meiner result ist, weil meine Funktion den Wert des Ergebnisses in der ersten Schleife der Iteration zurückzukehren versucht, bevor irgendetwas zu ihm zugewiesen wurde. Ich habe die dreifach konditionalen bis diese zu decken, nicht sicher, warum es nicht funktioniert ...
  2. Mein erster if() bedingte soll das gegebene Zeichen der Zeichenfolge machen result hinzugefügt werden nur wenn es sich um eine Zahl ist , aber jedes einzelne Zeichen wird hinzugefügt.

Jede Hilfe geschätzt - danke im Voraus.

Antwort

1

Dadurch werden alle Zahlen aus einer Zeichenfolge als Array abgerufen, dann .join (""), um die Zeichenfolgen ohne Trennzeichen zwischen ihnen zusammenzuführen, dh eine fortlaufende Verkettungszeichenfolge aus Ziffern.

var numberPattern = /\d+/g; 

'something102asdfkj1948948'.match(numberPattern).join(""); 

Yields "1021948948"

0

Die grundlegende Logik ist unter:

var x = 'Hello please call (727) 902-1112'; 

var numbers = x.match(/[0-9]/g).join(''); 

console.log(numbers); 

Ergebnis: 7279021112

Nun zu einer Funktion, ich denke, das könnte Ihnen helfen:

var x = 'Hello please call'; 
var y = 'Hello please call (727) 902-1112'; 

    function pureNumbers(param) { 
     result = param.match(/[0-9]/g); 

     if (Array.isArray(result)) { 
      return result.join(''); 
     } 
     return false; 
    } 

console.log(pureNumbers(x)); // returns false 
console.log(pureNumbers(y)); // returns 7279021112 

Hinweis: isArray() funktioniert nicht in älteren Versionen von IE 9. Sie müssten es differently tun.

0

Sie können auch Folgendes versuchen: string.replace(/[^0-9]/g, '');ORstring.replace(/\D/g,''); abzustreifen alle nicht-nummerische Zeichen.

function pureNumbers(str) { 
    var num = str.replace(/[^0-9]/g, ''); 
    return num; 
} 

alert(pureNumbers('(123) 456-7890')); 
0

Ich habe nur Ihre Funktion ein wenig geändert, obwohl es auf viele Arten gelöst werden kann, vor allem mit Regex.

function pureNumbers(phoneNumber) { 
    var result = ""; 
    for (var i = 0; i < phoneNumber.length; i++) { 
    if (!isNaN(phoneNumber[i]) && phoneNumber[i].trim() !== '') { 
     result += phoneNumber[i]; 
    } 
    } 
    return result; 
} 

Hoffen Sie, dass Sie einen Hinweis erhalten und für bessere Lösung verbessern können.