2011-10-05 24 views
16

come posso contare il numero di numeri interi in una stringa utilizzando jQuery o javascript?Contare il numero di numeri interi in una stringa

Per esempio g66ghy7 = 3

+1

È questo un compito? In tal caso, aggiungi il tag [homework] (http://stackoverflow.com/questions/tagged/homework). –

+5

66 non è un numero intero? Penso che tu intendessi "cifre" :) –

risposta

28
alert("g66ghy7".replace(/[^0-9]/g,"").length); 

sguardo here.

+0

Heh, solo per non scherzare con questo: '/^[0-9]/g' :) http://jsfiddle.net/a52bokjf/1/ –

1

Un'alternativa un po 'più lunga è convertire ciascun carattere in un numero; se non fallisce, solleva il contatore.

var sTest = "g66ghy7"; 

var iCount = 0; 
for (iIndex in sTest) { 
    if (!isNaN(parseInt(sTest[iIndex]))) { 
     iCount++; 
    } 
} 
alert(iCount); 

Vedere anche il mio jsfiddle.

5

La soluzione più semplice sarebbe utilizzare un'espressione regolare per sostituire tutto il ma i valori numerici e tirare fuori la lunghezza in seguito. Si consideri il seguente:

var s = 'g66ghy7'; 
alert(s.replace(/\D/g, '').length); //3 
+0

Non dovrebbe essere s .replace ('/ \ d/g') abbastanza? –

+0

'\ D' significa non numerico, quindi' s.replace (/ \ D/g, '') ' –

+0

@RicardoTomasi - grazie, aggiornato poiché è un utilizzo migliore. – f0x

5

Trovo che questo guardare piuttosto/semplice:

var count = ('1a2b3c'.match(/\d/g) || []).length 

Un RegExp probabilmente prestazioni migliori (it appears):

var r = new RegExp('\\d', 'g') 
    , count = 0 

while(r.exec('1a2b3c')) count++; 
Problemi correlati