Newsgroup: it.comp.lang.javascript
Titolo: sapere quante x ci sono in una stringa

Ciao a tutto il gruppo. 
La domanda è semplice, la soluzione non lo so ^_^
Ho una stringa "qwertyqwertyqwerty". Con un metodo JavaScript posso
sapere quante "q" o quante "w" etc. sono presenti nella stringa?
Ciao e grazie.
-- 
Nicoletta

 sapere quante "q" o quante "w" etc. sono presenti nella stringa?
Non sò se esiste una funzione già fatta, comunque in attesa fattela da te,
ad es.:
function nric(str,r)
{
    for(var i=0,n=0,max=str.length;i<max;++i)
        if(str.charAt(i)==r)
            ++n;
    return n;
}

Gianni wrote:

ma in questo caso
++n   e    n++
non sono la stessa cosa?

 non sono la stessa cosa?
Un'altra volta, ho già fatto una discussione per questa storia,però non mi
sembra che fossi tu.
Allora tu hai chiara la differenza tra la posizione prefissa e postfissa dei
++??
nel 1° caso viene incrementata la variabile di 1 e restituito il valore
aggiornato
nel 2°  viene incrementata la variabile di 1 ma restituito il valore
iniziale
quindi in questo caso scrivere ++n e ++i op n++ e i++ era la stessa cosa!
Personalmete (quando è lo stesso) preferisco e/o sono abituato a mettere i
++/-- come prefisso
Ciao

 Ciao e grazie.
De nada. 
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 }
Perche' l'array dei match?
return this.replace(eval("/[^"+arguments[0]+"]/g"),"").length

 return this.replace(eval("/[^"+arguments[0]+"]/g"),"").length
Nel caso del prototipo e' piu' indicato cosi', infatti.


 Nel caso del prototipo e' piu' indicato cosi', infatti.
Dimenticavo una doverosa precisazione:
E' meglio cosi' solo se si vuole contare le occorrenze di un singolo 
carattere, ovviamente.
Usando un array di match non hai di queste limitazioni, e' piu' 
generico, e poi controllare le occorrenze di intere sottostringhe, senza 
cambiare il codice, ed eventualmente usare anche criteri di match 
complessi.


 complessi.
Ovviamente.
Si rispondeva alla domanda.

 Si rispondeva alla domanda.
La domanda era "generica", non aveva postato il caso "esplicito" 
(leggasi, non credo che qwertyqwerty sia la sua stringa ;) )
Senza contare, che l'uso piu' comune si ha nella ricerca di 
sottostringhe, non di singole lettere. 
Onde evitare che un utente poco esperto utilizzasse il codice 
impropriamente, ho preferito precisare la cosa che poteva non essere 
evidente ai piu'.
Per un uso generale, consiglio quindi gli array di match. Laddove non si 
sa a prescindere il contesto in cui si usa. Forse quindi per un 
prototipo e' piu' indicato quello, contrariamente a quanto ho detto 
prima.


 sottostringhe, non di singole lettere.
[...]
Mi va bene la risposta "didattica", ma se devo solo contare le occorrenze
modifico la precedente in:
return
this.replace(eval("/[^("+arguments[0]+")]/g"),"").length/arguments[0].length
(ovviamente fosse anche solo per darti contro)

 (ovviamente fosse anche solo per darti contro)
Ovviamente. Ma tieni di conto tutti i fattori, la prossima volta.


<snip>
Grazie a tutti per la gentilezza e per l'interessante dibattito che ne è
uscito fuori ^_^
-- 
Nicoletta