Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Luca_89
    Registrato dal
    Sep 2005
    Messaggi
    128

    [C#] - troncare le stringhe.. Trim? Replace?

    Salve a tutti.. mi sto esercitando sui tag id3v1 e mi si sta presentando un problema.. Una volta capita la struttura di questi tag, sono riuscito ad estrarmeli in base alla lunghezza della stringa (sapendo che il titolo può essere massimo 30 carat., artista 30 anno 4 etc etc).. ora sto implementando un mio metodo override ToString() in cui restituisco la stringa contentente i vari TAG senza riuscire però a togliere gli spazi vuoti!! Vi riporto la classe che dovrebbe restituirmi la stringa "pulita" dagli spazi.. (come potete vedere ho provato sia il metodo replace(), sia trim() senza ottenere però alcun risultato)
    http://gist.github.com/232868

    Mentre qui c'è il metodo che estrae dal file i tag, li manda all'oggetto Tag(classe precedente) e poi stampa con ToString()
    http://gist.github.com/232870
    Il risultato è semicorretto: insieme al titolo, artista etc ci sono anche gli spazi..
    come li tolgo?

  2. #2
    Ma intendi gli spazi alla fine? o in mezzo?

    la replace fa la replace solo della prima occorrenza, devi usare un'espressione regolare se vuoi eliminare tutti gli spazi, ma poi ti appiccica anche tutte le parole assieme se non la scrivi correttamente.

    Trim invece fa al caso tuo, li leva solo a destra e a sinistra

    Metti la trim sul set delle proprietà anzichè sulla get

    codice:
    public string Artist
    {
        get { return this._artist; }
        set { this._artist = value.Trim(); }
    }

    p.s. se anche così non lo fa allora forse quello che vedi come spazio, non è uno spazio, magari durante l'encoding è diventato qualcosaltro.

  3. #3
    Utente di HTML.it L'avatar di Luca_89
    Registrato dal
    Sep 2005
    Messaggi
    128
    Neanche impostandolo sul setter riesco a togliere gli spazi.. come faccio a capire se quelli in realtà sono spazi o è altro???

  4. #4
    se il tuo problema è quello di togliere gli spazi, puoi usare split.
    lo split prende la variabile stringa, e la divide in un vettore di stringhe togliendo il carattere o il vettore di carattere che gli viene impostato. se tu come carattere da togliere inserisci lo spazio, lui automaticamente ti toglie tutti gli spazi e ti restituisce un vettore senza spazi.

    ti faccio un'esempio pratico, ti riporto uno spezzone di codice di un mio programma:

    codice:
                char divisore = ' '; //imposto come divisiore lo spazio
                string[] divisi; //creo un vettore che conterrà il risultato della divisione
                const string daDividere = "Ciao!!! io devo essere diviso :)"; //dichiaro una stringa come prova da dividere
                divisi = daDividere.Split(divisore); //divido la parola e la inserisco in un vettore, togliendo (separatore) ovvero lo spazio vuoto
                foreach (string s in divisi) //letteralmente, per ogni singola stringa nel vettore, scrivi la stringa.
                    Console.WriteLine(s);
    
                //se invece voglio unire in una stringa tutto tranna che gli spazi, farò:
                string unione = "";//questo passaggio è molto importante in quanto una stringa dichiarata e non assegnata
                                   //ha valore "null" e il c# non ammette l'utilizzo in concatenazioni di valori null
                foreach (string s in divisi)
                    unione = unione + s; //unisco in unione tutte le singole stringhe del vettore
                Console.WriteLine(unione);
    in questo modo riesco a togliere perfettamente tutti gli spazi o a togliere qualsiasi altro carattere.

    Spero di esserti stato d'aiuto
    ..::Gentoo powered::..

  5. #5
    Utente di HTML.it L'avatar di Luca_89
    Registrato dal
    Sep 2005
    Messaggi
    128
    Neanche in questo modo riesco a togliere gli spazi.. mi sembra più logica l'idea che quelli in realtà non siano spazi!! che ne pensate?

  6. #6
    Utente di HTML.it L'avatar di Luca_89
    Registrato dal
    Sep 2005
    Messaggi
    128
    Forse ci son riuscito... dovevo usare il Trim(), specificando il carattere '\0' .. quindi stringa.Trim('\0'); .. perchè non ha funzionato specificando invece Trim(' '); ?

  7. #7
    sinceramente non conosco l'utilizzo di questi tag. ma non è che lo spazio è formattato tipo html?
    con il %20?
    ..::Gentoo powered::..

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Luca_89
    Forse ci son riuscito... dovevo usare il Trim(), specificando il carattere '\0' .. quindi stringa.Trim('\0'); .. perchè non ha funzionato specificando invece Trim(' '); ?
    Evidentemente non sono spazi ma caratteri NUL (zero binario).

    Puoi esaminare in debug il contenuto delle variabili lette per rendertene conto facilmente.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di Luca_89
    Registrato dal
    Sep 2005
    Messaggi
    128
    mi chiedo.. invece per scrivere i tag sul file, se ho un titolo lungo 10 caratteri.. come riempo i rimanenti 20??? va bene con soli spazi?

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... te l'ho detto ... usa caratteri nul (\0 zero binario)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.