Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [c#] ciclo su strnga

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    5

    [c#] ciclo su strnga

    salve a tutti, mi sto cimentanto di un mesetto con c# , sto studiando su due libri, uno scritto da Schildt e uno scritto da Antonio Pelleriti.

    Sto tentando di risolvere un esercizio che a voi potrebbe risultare ridicolo ma a me sta creando non pochi problemi, dovrei semplicemente estrapolare due caratteri , x e y nella stringa "<tag>x</tag><tag>y</tag>" escludendo quindi i tag html , inizialmente l ho risolta in questo modo :

    const string START_WORD = "<tag>";
    const string END_WORD = "</tag>";

    string stringa = "<tag>y</tag><tag>y</tag>";




    //Recupero la posizione di "striga" dove compare la parola corrispondente a START_WORD. L'indice che ritorna è il punto di inizio della parola
    int inizio = stringa.IndexOf(START_WORD);
    int fine = stringa.IndexOf(END_WORD);




    //La lunghezza dei caratteri da recuperare per trovare la x è posizione_fine - (posizione_inizio + lunghezza parola_inzio)
    int lunghezza = (fine) - (inizio + START_WORD.Length);



    string laX= stringa.Substring(inizio + START_WORD.Length, lunghezza);
    //string laY = stringa.Substring(inizio2 + START_WORD2.Length, posizioneY);



    Console.WriteLine( laX);
    Console.ReadLine();
    }

    }

    in questo modo recuperavo la x , stavo per recuperare anche la y ma vorrei riuscirci con un ciclo di controllo in modo che risulti dinamico , credo che il più adatto sia il for ma in tutti gli esempi che ho visto i controlli vengono effettuati più su calcoli numerici piuttosto che sul controllo di lettere o caratteri, solitamente mi appoggio su msdn ma anche li non riesco a trovare quello che sto cercando, qualcuno riuscirebbe ad indirizzarmi verso il ragionemento giusto?
    Grazie infinite

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La questione potresti risolverla con

    codice:
                string [] tok = {"<tag>", "</tag>"};
                string v = "<tag>x</tag><tag>y</tag>";
    
    
                string [] res = v.Split(tok, StringSplitOptions.RemoveEmptyEntries);
    
    
                foreach(string s in res)
                    Console.WriteLine(s);
    Ma se hai un file XML sarebbe meglio utilizzare una classe opportuna già disponibile.

    P.S. Questa è la stessa questione che volevi porre in

    https://www.iprogrammatori.it/forum-...ga-t31159.html

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    5
    Si esatto sono sempre io , ti ringrazio tantissimo, posso chiederti l ultimo favore di spiegarmi le ultime 3 righe di codice? cioè giusto il ciclo

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Quote Originariamente inviata da DeniZ83 Visualizza il messaggio
    Si esatto sono sempre io , ti ringrazio tantissimo, posso chiederti l ultimo favore di spiegarmi le ultime 3 righe di codice? cioè giusto il ciclo
    Le righe si spiegano da sole ... cosa non comprendi in particolare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Le righe si spiegano da sole ... cosa non comprendi in particolare?
    string [] res = v.Split(tok, StringSplitOptions.RemoveEmptyEntries);


    foreach(string s in res)

    nella prima riga, dalla variabile tok in poi non capisco cosa succeda, nel ciclo invece è inserito lo string, ho sempre visto, per quel poco che ho visto, che nei cicli vengono iserite solo variabili, non capisco cosa succeda nel ciclo

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    nella prima riga, dalla variabile tok in poi non capisco cosa succeda
    Viene chiamato il metodo Split per la variabile v
    Quello che fa il metodo Split e quali sono i suoi argomenti, lo leggi dalla documentazione seguente

    https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx

    nel ciclo invece è inserito lo string, ho sempre visto, per quel poco che ho visto, che nei cicli vengono iserite solo variabili, non capisco cosa succeda nel ciclo
    s è una variabile di tipo string

    La for in questo caso è una foreach, studiala da qui

    https://msdn.microsoft.com/it-it/library/ttw7t8t6.aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Viene chiamato il metodo Split per la variabile v
    Quello che fa il metodo Split e quali sono i suoi argomenti, lo leggi dalla documentazione seguente

    https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx



    s è una variabile di tipo string

    La for in questo caso è una foreach, studiala da qui

    https://msdn.microsoft.com/it-it/library/ttw7t8t6.aspx
    ti ringrazio tantissimo!

  8. #8
    ciao,
    un'altra possibilità sarebbe quella di usare un'espressione regolare, per esempio:

    codice:
    static void Main()
    {
     string pattern = "<tag.*?>(.*?)<\\/tag>";
     Regex rex=new Regex(pattern);
     string stringa = "<tag>x</tag><tag>y</tag>";
     var m = rex.Match(stringa);
     int matchCount = 0;
     while (m.Success)
     {
        Console.WriteLine($"indice {m.Groups[1].Index} valore {m.Groups[1].Value}"); 
        m = m.NextMatch();
     }
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2017
    Messaggi
    5
    Quote Originariamente inviata da zetanove Visualizza il messaggio
    ciao,
    un'altra possibilità sarebbe quella di usare un'espressione regolare, per esempio:

    codice:
    static void Main()
    {
     string pattern = "<tag.*?>(.*?)<\\/tag>";
     Regex rex=new Regex(pattern);
     string stringa = "<tag>x</tag><tag>y</tag>";
     var m = rex.Match(stringa);
     int matchCount = 0;
     while (m.Success)
     {
        Console.WriteLine($"indice {m.Groups[1].Index} valore {m.Groups[1].Value}"); 
        m = m.NextMatch();
     }
    }
    Grazie infinite Sig. Pelleriti

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.