Oppure

Loading
05/11/12 9:16
fusebyte
Avrei bisogno di un piccolo aiuto.
Nella var _line ho caricato tutta la lista del file.txt, ma quando vado a creare il file di output mi da pari pari gli stessi dati del file di input.
Non riesco a capire dove sbaglio!

Questo codice "dovrebbe contare 7 che sta per la lenght di HTTP:// e salvare in output tutto quello che c'è fino a "@",
ma non lo fa.
E secondo me,si potrebbe fare meglio perchè se mi capita una URL con SubFolder tipo:

[CODE]
amazing.com
parents/miaragazza@scassasempre.net[/…]

la seconda URL non viene filtrata bene.

Il mio output dovrebbe essere
Giorgia
miaragazza

if (checkBox_MyPrivateDatal.Checked)
                    if (!string.IsNullOrEmpty(_line))
                    {
                        try
                        {
                            int _trimLength = Convert.ToInt32(_line.Trim());

                            string line = (_line); // Passi la tua stringa
                            _trimLength = _line.IndexOf("@"); // Individui il carattere @
                            _line = _line.Substring(7, _trimLength);// Ti prendi solo ciò che ti serve
                                    
                               break;
                               }  
                        
                          catch (Exception)
                        {
                      }

                   }


Chi mi da una mano?

Grazie Mille

Ciao
Ultima modifica effettuata da fusebyte 05/11/12 9:20
aaa
05/11/12 9:48
Renny
Ciao
Uhm.. senza andarsi a complicare troppo la vita, a te interessa il testo compreso tra l'ultima "/" e la "@".
Basta che usi il metodo substring, specificando come inizio carattere LastIndexOf("/";), che eviti di prendere anche la sottodirectory, e come lunghezza, fai riferimento alla "@".
Se con i metodi non ti trovi tanto, una possibile soluzione potrebbe essere di convertire la tua stringa in un array di Char, poi lo scorri dalla fine all'inizio, salvandoti in 2 variabili la prima occorrenza del carattere "/" e quella di "@". Dopo di che estrai i caratteri compresi tra le 2 "variabili".
;)
aaa
05/11/12 9:56
Quella Convert.ToInt32 non ha alcun senso ...

Comunque, ti basta

string res = "";
int atpos = line.IndexOf("@");

if (atpos>0)
{
    int slpos = line.LastIndexOf('/', atpos);
    if(slpos>0) 
        res =line.Substring(slpos+1, atpos - slpos-1);
}


e il risultato lo hai nella stringa res
Ultima modifica effettuata da 05/11/12 9:57
05/11/12 11:20
fusebyte
Vi Ringrazio entrambi, provo subito i vostri consigli.

Grazie ancora..sperando di riuscire :-)))


Ciao
aaa
05/11/12 13:37
Roby94
Scusate ma non sarebbe molto piu semplice lavorarsela con le regex? è un metodo anche un po piu elegante
aaa
05/11/12 14:05
Certo che si può ma molte volte bisogna prospettare soluzioni che siano alla portata di chi fa la domanda ...
05/11/12 14:09
Roby94
Postato originariamente da nessuno:

Certo che si può ma molte volte bisogna prospettare soluzioni che siano alla portata di chi fa la domanda ...

Si hai ragione nessuno :) comunque io l'ho buttata li come idea, se poi per fusebyte puo andare, lo si aiuta a buttare giu una regex.
aaa
05/11/12 14:42
fusebyte
Si, disponibilissimo ad imparare.
Pero'Vi chiedo un piccolo sforzo e farmi vedere almeno come prima volta un esempio completo.

Ho provato il codice di Nessuno e non vuole andare/per colpa mia)

Avendo caricato il file sulla var _line ,

     }

                
            while (!_read.EndOfStream)
            {
                string _line = _read.ReadLine();



ho modificato cosi'


                     if (checkBox_MyPrivareData1.Checked)
                              if (!string.IsNullOrEmpty(_line))
                    {
                        try
                        {
                         
                                   string res = "";
   
                                      int atpos = _line.IndexOf("@");
 
       
  
                                       if (atpos>0)
   
                                                  {
   
                                       int slpos = _line.LastIndexOf('/', atpos);

                                        if(slpos>0)

                                        res = _line.Substring(slpos+1, atpos - slpos-1);
 
                                                     
                                    }  
                              }
                        catch (Exception)
                        {
                      

                   }

               }


ma non va, nel file di output continua a stamparmi gli stessi dati dell'input.
Stavolta dove ho sbagliato,mannaggia....

Grazie,Ciao
Ultima modifica effettuata da fusebyte 05/11/12 14:59
aaa