Newsgroup: it.comp.lang.javascript
Titolo: conteggio delle parole di una frase

Ho iniziato a studiare da poco javascript e i miei capi mi hanno affidato
,per esercitarmi, un esercizio che non riesco a risolvere...
In pratica dovrei fare in modo che inserendo un testo qualsiasi in una
textarea cliccando su un pulsante mi compaia un alert con la cifra delle
parole (non delle lettere!!) che compongono la frase...(ad es. scrivendo
"ciao a tutti come state" l'alert mi dovrebbe dare come risultato 5)
Qualcuno di voi mi può dare una mano?
Grazie
emanuela

logica: togli eventuali spazi iniziali-finali, conta gli spazi e aggiungi 2.
Per togliere gli spazi iniziali-finali:
 function trim(str){
   return String(str).replace(/^\s*/, "").replace(/\s*$/, "");
  }
 Per contare le occorrenze di un carattere in una stringa io mi ero scritto
tempo fa questa:
 function contachar(s,char,case_sensitive) {
   eval("var reg=/"+char+"/g"+(case_sensitive?"":"i"));
   var ris=String(s).match(reg);
   return(ris==null?0:ris.length);
  }
A te il compito di unirle in una function...

 "ciao a tutti come state" l'alert mi dovrebbe dare come risultato 5)
Basta splittare la frase:
alert("ciao a tutti come state".split(" ").length)
Oppure:
alert(document.forms["nomeForm"].elements[nomeCampo].value.split("
").length)
Oppure:
var gfC_var=document.forms["nomeForm"].elements[nomeCampo].value
alert(gfC_var.split(" ").length)
Pero', potresti avere (per qualche motivo), una frase di questo tipo:
"ciao a,tutti come;state"
allora risolviamo con uno splitMultiplo, cosi':
alert("ciao a,tutti come;state".split(/[\; ,]/).length).
Cosi' dovresti avere un ventaglio di possibilita' abbastanza ampio.
--
Ciao
  [web]   
www.gfcarlotti.it
   [mail]   
fra...@gfcarlotti.it
    [pgp]  
www.gfcarlotti.it/pgp/franco.asc

 logica: togli eventuali spazi iniziali-finali, conta gli spazi e aggiungi 2.
In una textarea ci possono essere anche dei TAB o degli INVIO.
In ogni caso la ragazza deve imparare, quindi non le diamole pappa pronta :-)
-- 
Ciao, Riccardo
------------------------------------------------------------------------
http://www.jsdir.com
 ---- Bring Your Site To Life!!!!
------------------------------------------------------------------------
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - D2D006
------------------------------------------------------------------------
 ----> itALY = it <----

 alert("ciao a,tutti come;state".split(/[\; ,]/).length).
Bello il pattern dentro allo split(), non lo sapevo :-))
Ma, per Emanuela, in ogni caso un esempio come questo non dovrebbe esserci, 
dopo i segni di interpunzione ci va sempre uno spazio secondo grammatica.


, 
e.and...@fabaris.it
 
says...

Se devi imparare non ha senso darti soluzioni pronte.
Tu fino ad ora cosa hai fatto? Penso che impari meglio e di piu' se 
analizziamo insieme il tuo lavoro piuttosto che se studi qualcosa di gia' 
pronto.


 l'alert mi dovrebbe dare come risultato 5)
cosě su due piedi:
// cerca tutti i gruppi di uno o piů caratteri che compongono parole,
// ossia... cerca tutte le parole :-)
var rx = /\w+/g;
var matches = string.match(rx);
// conta quante parole sono state trovate... se ne sono state trovate
var wordcount = matches ? matches.count : 0;
Si puň personalizzare ulteriormente sostituendo la prima riga con:
var rx = new RegExp("[" + charset + "]{" + minlen + ",}", "g");
dove charset dev'essere una stringa, con sintassi "A-Za-z0-9_", che 
definisca che tipo di caratteri compongono una parola (in questo caso, 
tutte le lettere dell'alfabeto, maiuscole e minuscole, tutti i numeri e 
l'underscore - il \w che ho usato sopra equivale appunto a [A-Za-z0-
9_]), e minlen la lunghezza minima delle parole da contare
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.20. C, C++ and ASM developers
                              and beta testers are welcome!

 In ogni caso la ragazza deve imparare, quindi non le diamole pappa pronta
:-)
uomo senza cuore :-))))))))))))

, 
blin...@despammed.com
 
says...

'azz anche mia moglie a volte dice ce c'ho un processore al posto del 
cuore... che abbia ragione? :-)


 cuore... che abbia ragione? :-)
l'importante è che tu non l'abbia montato da qualche altra parte
:-))))))))))))

, 
blin...@despammed.com
 
says...

Beh a 1 Gigaherz... forse le conviene...
Ok, basta finiamola qui! :-))



[CUT]
Scusa se esco un po' dal tema, ma con uno script sarebbe possibile
calcolare e rimpiazzare con spazi il testo che manca sulla riga di una
textarea?
Cerco di spiegarmi meglio:
se sto scrivendo in una <TEXTAREA rows=15 cols=40> alla fine delle 40
battute la riga torna a capo e cosi' le righe successive, ma a seconda
di quello che scrivo il testo puo' non occupare tutta la riga; in tal
caso resta un vuoto piu' o meno grande.
Ti chiedo: questo vuoto puo' essere riempito con spazi intervallati fra
una parola e l'altra fino a raggiungere un effetto giustificato senza
ovviamente usare lo style TEXT-ALIGN: justify ?
-- 
     * b *
   *   y   *
 *   Piero   *

 justify ? 
ti sei risposto da solo :-) Usa lo stile, chè è stato fatto per questo


 ti sei risposto da solo :-) Usa lo stile, chè è stato fatto per questo
Era proprio quello che non volevo fare. :-(


 Era proprio quello che non volevo fare. :-(
e perchè mai? guarda che in Javascript è tutt'altro che banale, e non è 
detto che funzioni su tutti i browser. Usa lo stile: l'effetto è lo 
stesso, lo sforzo molto meno
