Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95

    [C#]Rimpiazzare più caratteri in una stringa

    Ciao a tutti!

    Sto scrivendo un programmino Console in C#.
    Ho una variabile di tipo string con all'interno una parola o una frase. Voglio rimpiazzare più di un carattere nella stringa. Ho provato con una serie di Replace, ma l'ultimo sostituisce quello precedente. Per spiegarmi meglio vi scrivo un pezzo del codice che ho scritto:

    string parola = "casa";
    string nuova;
    nuova = parola.Replace('c','b');
    nuova = parola.Replace('a','o');
    nuova = parola.Replace('s','p');
    System.Console.WriteLine(nuova);

    Vorrei stampare "bopo" ma stampa "capa", cioè sostituisce solo la S anzichè tutte le lettere.
    Come posso sostituire più lettere?

    Grazie mille per il vostro aiuto!

  2. #2
    Nel tuo esempio hai sostituito solamente 's' con 'p', mentre le sostituzioni precedenti sono andate perse perchè sei partito sempre dalla variabile parola... Così dovrebbe andare:
    codice:
    string parola = "casa";
    string nuova;
    nuova = parola.Replace('c','b');
    nuova = nuova.Replace('a','o');
    nuova = nuova.Replace('s','p');
    System.Console.WriteLine(nuova);
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95
    Grazie 1000!

    E se invece volessi che l'utente inserisca una frase e che vengano cambiate tutte le lettere dell'alfabeto come faccio? Usando questa tecnica succede che vengono cambiate anche le lettere che ne hanno già sostituite altre, mentre io voglio, ad esempio, che la A sia sempre una K, che la B sia sempre una H, che la C sia sempre una M, e così via.

    Grazie per aiutarmi ancora

  4. #4
    Fai un ciclo su tutti i caratteri di "parola", copi ogni carattere dentro la variabile "nuova" sostituendolo con un altro se serve... non mi viene in mente altro metodo!
    Chi non cerca trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95
    Sto provando a impostare un ciclo for con ToCharArray ma non mi riesce . Sono sulla buona strada? Cioè ToCharArray serve a far passare un carattere per volta di una stringa?
    Se sì come si usa? Quando metto gli argomenti, durante l'esecuzione del debug, mi dà un errore ArgumentOutOfRangeException . Eppure non metto nè numeri negativi nè numeri maggiori del numero di caratteri nella stringa.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    fai un ciclo foreach per ogni char nella stringa, oppure un ciclo for da 0 alla lunghezza della stringa (-1) e poi leggi stringa.char[i]
    Ans.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95
    string frase = Console.ReadLine();
    frase.ToCharArray(0,frase.Length);
    foreach (string s in frase)
    {
    System.Console.WriteLine(s);
    }

    Mi dice che è impossibile convertire il tipo char in string .

  8. #8
    codice:
    string frase=Console.ReadLine();
    for (int c=0; c<string.Length; c++)
    {
        Console.WriteLine(frase.Chars(c));
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    95
    Mi dà questi errori con quel codice

    Occorre un riferimento a un oggetto per la proprietà, il metodo o il campo non statico 'string.Length.get'

    'string' non contiene una definizione per 'Chars'

  10. #10
    Pardon, avevo sbagliato a scrivere:
    codice:
    string frase=Console.ReadLine();
    for (int c=0; c<frase.Length; c++)
    {
        Console.WriteLine(frase[c]);
    }
    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.