Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Operazioni su stringa

  1. #1

    Operazioni su stringa

    Visto che mi avete aiutato perfettamente per quanto riguardava l'ultimo quesito, vi posto anche questo su cui ho qualche problema.

    Definire una funzione che ha come parametro una stringa s formata da almeno 2 caratteri, e restituisce una stringa ottenuta sostituendo tutte le occorrenze del secondo carattere di s con il primo carattere di s. ( ad esempio : leone diventa llonl )

    Avevo pensato a questa soluzione :

    codice:
    function stringa (s){
             if (s.length < 2) return 'Inserisci una stringa valida ' ; // almeno 2 caratteri 
             else 
             var i = 0;
             var ns = ' '; // definisco la nuova stringa che dovro' stampare 
             while (i < s.length ) { // sino a che l'indice e' minore della lunghezza della parola 
             ns = ????? 
             i++; 
             }
     return ns ;
    }
    La parte in rosso e' quella che in teoria mi manca, sempre a patto che il resto della funzione sia corretta

  2. #2
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    per queste cose qua invece di fare cicli sulla stringa č meglio usare le regular expression
    codice:
    function stringa(s){
      if(s.length < 2)return 'Inserisci una stringa valida ' ; // almeno 2 caratteri 
      else{
        var re=new RegExp(s.substr(1,1),'ig');
        return s.replace(re,s.substr(0,1))
      }
    }

  3. #3
    eh ma purtroppo devo obbligatoriamente usare un ciclo, fa parte dell'esercizio

  4. #4
    Usando un ciclo puoi fare una cosa del genere:

    codice:
    function exercise(str){
    	var 
    	 rpl=str.substr(0,1) // carattere di replacement
    	 ,fnd=str.substr(1,1)// carattere da cercare
    	 ,str_length=str.length 
    	 ,result=""; 
    	 
     if (str_length<2) return false;
     
     for (var i=0;i<str_length;i++)
     // operatore ternario: se il carattere i-esimo č uguale a "rpl" aggiunge 
     // alla stringa "fnd" altrimenti aggiunge il carattere i-esimo
     	result+=str.substr(i,1)==fnd?rpl:str.substr(i,1);
    
     	alert([str,result]);
     	return result;
    }
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  5. #5
    Mmmm non ho capito molto bene : ho provato cmq a modificare la mia funzione.

    codice:
    function stringa (s){
             if (s.length < 2) return 'Inserisci una stringa valida ' ;
    				 else 
    				 var i = 0;
    				 var ns = '';
    				 var car1 = s.substr(0,1); //carattere da rimpiazzare
    				 var car2 = s.substr(1,1); //carattere da inserire
    				 while (i < s.length ) {
    				 ns = ns + s.replace(car1,car2) ;
    				 i++
    				 }
    				 return ns ;
    }
    Ho usato il while anziche' il for, ma non credo sia quello il problema.
    In questo modo pero' inserendo la stringa leone mi restituisce esattamente " eeoneeeoneeeoneeeoneeeone " , che sembrerebbe eeone ( cioe' la sostiutuzione corretta ) ma ripetuta troppe volte.
    Se oltretutto provo a mettere pippo mi restituisce iippoiippoiippoiippoiippo , cioe' iippo, cioe' assolutamente niente di corretto

  6. #6
    O usi replace o usi un ciclo.
    s.replace sostituisce la prima occorrenza di ciō che cerchi, ma restituisce l'intera stringa, quindi alla fine del ciclo otterrai appunto la stringa ripetuta tot volte con la prima occorrenza sostituita. Che poi ... il risultato deve essere llonl o eeone?

    devi estrarti ogni singolo carattere della parola ed eventualmente sostituirlo se c'č corrispondenza:

    codice:
    ns+=s.substr(i,1)==car2?car1:s.substr(i,1);
    // esplicitando il costrutto if/else diventa
    // con s.substr(i,1) il carattere estratto partendo dal primo fino all'ultimo
    
    if (s.substr(i,1)==car2) ns=ns+car1
    else ns=ns+s.substr(i,1)
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  7. #7
    Ora ho capito !!
    Perdonami ma l'operatore ternario ancora non l'ho guardato, quindi non riuscivo a capire cosa intendevi !!!

    Ti ringrazio ancora per la pazienza

  8. #8
    Ho riscritto il codice come avevi detto e l'ho provato, funziona benissimo !! Probabilmente avrei pototo evitare " l'else if " mettendo semplicemente " else " , pero' in questo modo mi ricordo in quale modo la funzione si comporta in quel caso !!
    Ti ringrazio ancora !

    p.s : la posto interamente in modo che se a qualcuno serve puo' prenderla direttamente

    codice:
    function stringa (s){
             if (s.length < 2) return 'Inserisci una stringa valida ' ;
    				 else 
    				 var i = 0;
    				 var ns = '';
    				 var car1 = s.substr(0,1); //carattere da rimpiazzare
    				 var car2 = s.substr(1,1); //carattere da inserire
    				 while (i < s.length ) {
    				 if (s.substr(i,1) == car2 )
    				 ns = ns + car1 ;
    				 else if (s.substr(i,1) != car2 )
    				 ns = ns + s.substr(i,1);
    				 i++
    				 }
    				 return ns ;
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.