Avatar billede smileymans Praktikant
10. februar 2009 - 12:32 Der er 6 kommentarer og
1 løsning

Class der tester URL gyldighed virker ikke

Hejsa.

Jeg døjer med at lave en klasse, der tester når en bruger har indtastet et link, og tilføjer "http://" og fjerner mellemrum. indtil videre ser min klasse sådan ud:


public class UrlFormatting
{
    public String FormatURL(string Link)
    {
        Link.TrimStart();
        Link.TrimEnd();
        if (Link.StartsWith("www") == false)
        {
            if (Link.StartsWith("http://"))
            {
                return Link;
            }
        }
        else
        {
            Link.Insert(0, "http://");
            return Link;
        }
        Link = "Ugyldigt link format. Links skal starte med http:// og/eller www.";
        return Link;
    }
}

Jeg vil så kalde det sådan her:


protected void Button1_Click(object sender, EventArgs e)
    {
        string Link = TextBox1.Text.ToString();
        UrlFormatting Url = new UrlFormatting(Link);
        Url.FormatURL(TextBox1.Text);
        Label1.Text = Link.ToString();
    }


Jeg får så en fejlmeddelelse om, at den mangler en constructor i min klasse. Jeg er lidt ny med hensyn til klasser, og jeg kan virkelig ikke finde fejlen, så hvis nogle ved hvad der er galt, eller har en meget bedre måde at lave klassen på, så vil jeg meget gerne vide det :-)

På forhånd tak ;-)
Avatar billede aaberg Nybegynder
10. februar 2009 - 12:41 #1
prøv med dette i stedet.

protected void Button1_Click(object sender, EventArgs e)
{
    UrlFormatting Url = new UrlFormatting();
    Label1.Text = Url.FormatURL(TextBox1.Text);
}

Når man opretter en ny instans af en klasse, kører konstruktøren i klassen. Du prøver at parse Link med i konstruktøren, men da du ikke har lavet en konstruktør som tager imod Link, fejler den. Hvis man bare skriver "new UrlFormatting()", kalder man en tom default konstruktør, som kompileren laver for dig.
Avatar billede smileymans Praktikant
10. februar 2009 - 12:51 #2
Nu kom den en tand længere :-)

Men den vil stadig ikke redigere i linket.

Så hvis jeg skriver "  www.google.dk  " fjerner den hverken mellemrum eller tilføjer "http://" :-(

Hvis jeg kører Debuggeren, så kan jeg se, at Link indeholder "  www.google.dk  " hele vejen igennem, også selvom den passerer linierne


Link.TrimStart();
Link.TrimEnd();
Avatar billede smileymans Praktikant
10. februar 2009 - 13:00 #3
Jeg fandt ud af det :-)

Ved at skrive

Link = Link.TrimStart(); så virker det :-D

Så smid lige et svar, og så får du lige 30 point :-D

Mange tak :-D
Avatar billede aaberg Nybegynder
10. februar 2009 - 13:18 #4
Godt du fandt ud af det, den havde jeg ikke lige spottet.

I stedet for både at kalde TrimStart og TrimEnd, kan du nøjes med at skrive
Link = Link.Trim();

den trimmer automatisk begge ender.
Avatar billede arne_v Ekspert
10. februar 2009 - 13:56 #5
Link.Insert(0, "http://");

maa have samme problem
Avatar billede arne_v Ekspert
10. februar 2009 - 13:57 #6
if (Link.StartsWith("www") == false)

->

if (!Link.StartsWith("www"))
Avatar billede smileymans Praktikant
10. februar 2009 - 13:57 #7
Det er selvfølgelig rigtigt at jeg kan bruge trim() istedet for trimstart og trimend så længe det er link vi snakker om :-D Så det må jeg hellere lige få ændret :-D jo mindre kode jo bedre :-D

Takker igen :-D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester