73 messaggi dal 14 ottobre 2002
Ciao a tutti, ho cercato un po' in giro ma non ho trovato molto di utile.
Il mio problemino è il seguente:

ho una textarea dove gli utenti possono inserire del testo, all'interno del testo è possibile che inseriscano un indirizzo email, dovrei fare in modo che quando poi il testo viene visualizzato una funzioncina individua se nel testo è stato inserito un indirizzo email e lo trasforma in un link utilizzabile con la solita sintassi
<asp:HyperLink runat=server navigateUrl="mailto:mail@mail.it">mail@mail.it</asp:HyperLink>

più o meno come succede nella magior parte dei forum...

Grazie mille per l'aiuto!
direi che la cosa migliore da fare è usare una regular expression per individurare ogni indirizzo email, e poi agire di conseguenza.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
73 messaggi dal 14 ottobre 2002
mumble... ho fatto cosi e funziona tutto tranne il replace finale...
no capisco cosa c'è che no va...

vado a bere un tè caldo e ci penso su

    public static string FormattaEmail(string testo)
    {
        string mail = string.Empty;
        string mailFormattata = string.Empty;
        string[] separatori =  new string[4];
        separatori[0] = " ";
        separatori[1] = "<br />";
        separatori[2] = ":";
        separatori[3] = ",";

        if (testo.Contains("@"))
        {
            string [] parole = testo.Split(separatori, System.StringSplitOptions.RemoveEmptyEntries);
            for (int i = 0; i < parole.Length; i++)
            {
                if (parole[i].Contains("@"))
                {
                    mailFormattata = string.Empty;
                    mail = string.Empty;

                    for (int k = 0; k < parole[i].Length; k++)
                    {
                        mail += parole[i][k].ToString();
                    }
                    mailFormattata = "<a href='mailto:" + mail + "'>" + mail + "</a>";

                    testo.Replace(mail, mailFormattata);
                }
            }
        }
        return testo;
    }
47 messaggi dal 18 settembre 2006
Contributi
A parte il fatto che Replace ritorna la stringa rimpiazzata e non ne sovrascrive l'istanza in cui richiami il metodo (le stringhe sono immutabili), perchè non usi, come suggerito, un'espressione regolare?

Guarda qui:

public static string FormattaEmail(string testo) 
{ 
    return Regex.Replace(testo, @"[^\s]*?@[^\s]*", "<a href=\"mailto:$&\">$&</a>");
}


E' solo un punto di partenza ma fa ciò di cui hai bisogno...

HTH

Efran Cobisi
Solution developer, consultant and trainer
MCAD, MCT, MCTS: SQL Server 2005
aggiungo a quato suggerito giustamente da efran.cobisi due link:

http://www.regular-expressions.info/reference.html

http://regexlib.com/Default.aspx

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
73 messaggi dal 14 ottobre 2002
Si in effetti il discorso del replace poi me ne sono accorto  ... l'ho usato altre 6 volte in quella stessa pagina... errore di distrazione

per quanto riguarda le regular expression non ne conosco molto bene l'utilizzo in effetti e per ora le ho utilizzate solo nei comparefieldvalidator, per ora funziona come ho fatto, ma sicuramente è molto più pulito e "giusto" come consigliate voi.

grazie mille a entrambi, appena ho un attimino di tempo mi studio i link che mi avete postato!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.