Discussione:JavaScript/Oggetto String

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search

Stavo leggendo la guida quando ho visto l'esempio charAt() e guardando la tabella con la scritta "Hello, world!" e ho notato che manca lo spazio tra la virola e la parola world... charAt() non rileva gli spazi? --Giacomo986 17:27, 28 feb 2009 (CET) 20:09, 24 feb 2009 (CET)

No, è un errore ;) Ora ho corretto, grazie per la segnalazione :) --Ramac · «che lungi saetta» 21:05, 25 feb 2009 (CET)

charAt[modifica]

Piccolo commento, l'esempio di charAt mostra hello world! Riportando .lenght-1 per la d, tutto ok ma secondo me potrebbe causare confusione o fraintendimenti a chi la legge di sfuggita (per esempio chi arriva da altri linguaggi ed è interessato alla sintatti più che altro, è il mio caso) prendendo per scontato che il -1 sia dovuto al carattere \0, che in C termina le stringhe. Sarebbe carino evitare questo tipo di esempio, rielaborandolo in altri modi :)

Approfitto per ringraziare della guida, molto ben fatta!

Esercizio 2[modifica]

Da quando ho scritto una vera funzione .py che risolve il problema dell'esercizio 2 sono a posto.... ma ci sono infiniti trabocchetti.

  1. il caso in cui le stringhe iniziale e finale non ci sono, o una delle due manca;
  2. il caso in cui la sottostringa finale viene prima della iniziale;
  3. il caso in cui la stringa iniziale comprende quella finale;
  4. il caso malefico (frequente) in cui le sottostringhe sono annidate (ossia vi sono più sottostringhe iniziali e poi una finale; es. i tag HTML).

Non appena ho cominciato a studiare js (tre giorni fa) la prima cosa che ho fatto è scrivere una funzione js che risolva (per bene) l'esercizio 2.

Se me la correggete mi fate un favore!

/* estrae dalla stringa testo la prima sottostringa che inizia con s1(stringa a piacere) e termina con s2 (stringa a piacere). 
Se delim==true restituisce, insieme alla sottostringa, anche i delimitatori s1 e s2, se delim==false li esclude.
Nella sequenza : .....s1....s1-----s2....s2.... restituisce s1-----s2 e non s1....s1-----s2 (restste ai "delimitatori annidati") */
 fs(testo,s1,s2,delim)
{

i1=testo.indexOf(s1);
if (i1>-1) 
   {
   i1=i1+s1.length;
   testo=testo.substring(i1);
   } 
else 
   {testo="";return testo;}
i2=testo.indexOf(s2);
if (i2>-1) 
      {testo=testo.substring(0,i2);
      } 
else 
      {testo="";return testo;
      }
lif=testo.lastIndexOf(s1);
if (lif!=-1) 
   {lif=lif+s1.length;
    testo=testo.substring(lif);
   }
if (delim) 
   {testo=s1+testo+s2;
   } 
return testo;
}

--Alex brollo (disc.) 15:29, 27 set 2010 (CEST)