4 messaggi dal 10 luglio 2009
Buongiorno,

ho creato una funzione che selezionate delle parole chiave le rintraccia all'interno di un testo e le evidenzia con un link al glossario.

public string applyGolss(string myString)
    {
        //trovo i dati nel glossario
        GlossarioDb gdb = new GlossarioDb();
        DataSet myGlossDb = gdb.getAllDataTerminiDb(false, 0, "myData");
        int myCont = 0;
        foreach (DataRow myR in myGlossDb.Tables["myData"].Rows)
        {
            //trovo l'id
            string myId = myR["id_termine"].ToString();
            string myhash = DateTime.Now.ToString().Replace(" ", "").Replace("/", "").Replace(".","");
            myhash += myCont.ToString();
            //trovo il termine
            string myTermine = myR["termine_inserito"].ToString();
            //trovo la spiega
            string mySpiega = myR["spiegazione_termine"].ToString();

            //vedo se è presente con la lettera maiuscola
            string myTermineMaiuscolo = myTermine.Substring(0, 1).ToUpper() + myTermine.Substring(1);
            myString = myString.Replace(" " + myTermineMaiuscolo , "<a href='glossario.aspx?idTer=" + myId + "' name='Glossario: " + myTermineMaiuscolo + "' > " + myTermineMaiuscolo + " </a>");

            //vedo se è presente con la lettera minuscola
            string myTermineMinuscolo = myTermine.Substring(0, 1).ToLower() + myTermine.Substring(1);
            myString = myString.Replace(" " + myTermineMinuscolo , "<a href='glossario.aspx?idTer=" + myId + "' name='Glossario: " + myTermineMinuscolo + "'> " + myTermineMinuscolo + " </a>");


            myTermine = "";
            mySpiega = "";
            myTermineMaiuscolo = "";
            myTermineMinuscolo = "";

            myCont++;
        }
        myGlossDb.Dispose();

        return (myString);
    }


Va tutto bene solo che se vengono inseriti dei caratteri speciali non funziona .
Avete qualche idea?

Grazie
molaskine wrote:
Va tutto bene solo che se vengono inseriti dei caratteri speciali non funziona .

di che caratteri speciali stai parlando?

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
4 messaggi dal 10 luglio 2009
Quando si inseriscono òàèéìù ecc...

IN pratica se il termine è "meta" viene riconosciuto se è "metà" non viene riconosciuto
Modificato da molaskine il 12 luglio 2009 13.53 -
molaskine ha scritto:
Quando si inseriscono òàèéìù ecc...

IN pratica se il termine è "meta" viene riconosciuto se è "metà" non viene riconosciuto


ed è ultra-ovvio che sia così: il carattere a è diverso da à. volendo potresti scriverti una routine (o una regular expression) che consideri tutte le permutazioni, ma giustamente non c'è niente di pronto da utilizzare, perchè sono due caratteri diversi e come tali vanno usati.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
4 messaggi dal 10 luglio 2009
Scusami forse mi sono spiegato male.
In pratica con quella funzione se nel glossario veniva selezionato il termine "meta" e nel testo c'era "meta" il link veniva attivato, mentre se il termine era "metà" e all'interto del testo c'era "metà" il termina non veniva evidenziato.
molaskine wrote:
In pratica con quella funzione se nel glossario veniva selezionato il termine "meta" e nel testo c'era "meta" il link veniva attivato, mentre se il termine era "metà" e all'interto del testo c'era "metà" il termina non veniva evidenziato.

e sei sicuro che venga caricato correttamente il testo?
inoltre, vedo che tu utilizzi lo spazio e fai due replace, mentre invece sarebbe molto più semplice utilizzare una regexp in questi scenari, così da recuperare anche variazioni nel case.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
4 messaggi dal 10 luglio 2009
Lo so è colpa mia , ma devo ancora imparare bene a usare le RegExp.

Ora però vedo che più vado avanti più servono.

Per il momento questa lo risolta con una funzione che tramuta i caratteri speciali in unicode e così va.

Comunque faccio tesoro del consiglio e mi metto sotto a imparare le RegExp

Ti ringrazio per l'aiuto.

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.