Newsgroup: it.comp.lang.javascript
Titolo: Ridurre una stringa ed aggiungere un punto

Devo controllare la lughezza di alcune stringhe e vorrei che, se la stringa 
supera i 20 caratteri, venga tagliata l'eccedenza e, se l'ultimo carattere č 
diverso da uno spazio, aggiungere un punto.
Le stringhe contengono nomi tipo "Milano Roma Bari Genova" separati da 
spazi. I nomi possono essere 1, 2, 3 etc... nell'esempio sono 4. Vorrei che, 
nel caso in esame, impostando il numero consentito a 10 caratteri, questa 
stringa venga modificata in "Milano Rom."
Ho provato cosě:
   if (miastringa.length > 20)  {
   if (miastringa.charAt(20)!= ' ')
   var miaStringaReplace = miastringa.replace(miastringa.charAt(20),".")
   miastringa = miaStringaReplace.substring(0,20)
   }
Ma qualcosa non va... dove sbaglio?
Posso controllare l'u
ora dovrei controllare che l'ultimo caratteria sia uno spazio oppure no 

    if (miastringa.charAt(20)!= ' ')
no ... charAt è a base zero => 20=21° carattere
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.


Era tutto qui?!? :-(
Che novellino che sono. Risolto. Grazie 

 no ... charAt è a base zero => 20=21° carattere
Pensavo d'aver risolto invece... ecco un bel comportamento strano dello 
script!
Allora lo script è questo:
  if (miastringa.length > 18)  {
   if (miastringa.charAt(17)!= ' ')
   var miaStringaReplace = miastringa.replace(miastringa.charAt(17),".")
   miastringa = miaStringaReplace.substring(0,18)
   }
Il problema è che STRANAMENTE su alcune stringhe non funziona.
Esempio, usando dei nomi di calciatori lo scirpt funziona su queste:
"BIZZARRI Albano Benjamin" -> BIZZARRI Albano B.
"ANDRADE Jorge Manuel" -> ANDRADE Jorge Man.
Ma non su queste:
"FLORO FLORES Antonio" -> FLORO FLORES A.ton
"ALMIRON Sergio Bernardo" -> ALMIRON Se.gio Ber
Non capisco proprio il perche! :-(

 Non capisco proprio il perche! :-(
Ok, ho capito qual'è il problema.
Il mio script rimpiazza il PRIMO carattere "17" che trova.
Es: se il carattere identificato con charAT(17) e una "n" al replace lui 
cambia la PRIMA "n" con un punto.
Invece io vorrei che cambiasse proprio il carattere in posizione 17.
Come posso fare? 

    var miaStringaReplace = miastringa.replace(miastringa.charAt(17),".")
uhm ... qua sostituisci la prima occorrenza del carattere che si trova in
diciottesima posizione con un . , non č quello che vuoi ...
cosě al volo (da testare):
 var miaStringaReplace=miastringa.replace(/(^.{17})(.)(.*$)/,"$1.$3");
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp#Description
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

  var miaStringaReplace=miastringa.replace(/(^.{17})(.)(.*$)/,"$1.$3");
dato che dopo fai un substr(18), puoi togliere a naso il $3 e togliere il
substr successivo...


 substr successivo...
Ti ringrazio, leggero quello che mi hai passato con attenzione.
Nel frattempo, considerando che comunque poi tagliavo la stringa, ho risolto 
in maniera maccheronica ma efficace con un
var miaStringaReplace = (miastringa.substring(0,17)+".");