Avatar billede everclear Praktikant
12. juli 2008 - 01:03 Der er 4 kommentarer og
1 løsning

Find tekst

Jeg sidder med et lille "problem". Jeg har en tekstboks hvor en bruger kan indtaste noget tekst. Det skal dog være muligt for brugeren at linke til en anden side på websitet ved bare at skrive navnet på siden i en placeholder som f.eks.:
{About.aspx}. Det virker også helt fint. Har en class, der finder ud af at finde den rigtige side og lave links osv. Virker uden problemer; MEN jeg vil gerne have sådan at kunden ligeledes kan skrive noget tekst ved linket. Således, at placeholderen får flg. form i stedet:
{About.aspx, Dette er et link til Om os side}.

Mit spørgsmål er så; hvordan får jeg nemmest fat i både navnet på siden, der skal linkes til samt det tekst der skal fremgå af linket?
Det er sansynligvis noget med regular expression, men da dette ikke lige er min stærke side, har jeg brug for lidt hjælp:-)
Avatar billede Zemich Nybegynder
12. juli 2008 - 12:49 #1
Jamen skal du da bare have den splittet op ved kommaet eller?
For så kan det da gøres ret nemt sådan her:

string myString = "About.aspx, Dette er et link til Om os side";
string[] split = myString.Split(new char[] {','});
split[1] = split[1].TrimStart(new char[] { ' ' });
Console.WriteLine(split[0]);
Console.WriteLine(split[1]);
Avatar billede everclear Praktikant
12. juli 2008 - 12:55 #2
Ja det er rigtigt, men problemet er jo, at jeg skal have fundet "linket" først. Jeg har jo en stor klump med tekst, hvor der MULIGVIS optræder et link i. Dvs. jeg skal først finde ud af om {About.aspx, Dette er et link} optræder. Men men men.....jeg kan jo ikke bare lave en søgning på "{About.aspx, Dette er et link}" fordi "Dette er et link" jo er variabel. Det er noget tekst brugeren selv skriver. Så jeg skal finde ud af om der optræder to klammer {} og hvis der gør, så skal jeg have hentet indholdet imellem disse klammer og have det delt op ved kommaet. Så det er lidt mere kompliceret end bare at "splitte" dem:-)
Avatar billede Zemich Nybegynder
12. juli 2008 - 13:56 #3
Jamen så får du da bare lov til det istedet. :)
husk at skrive using System.Text.RegularExpressions i starten.

string InputText = "Her er der en masse forksellige tekst som vi ikke{About.aspx, Dette er et link til Om os side}skal bruge til noget som helst...";

        Regex exp = new Regex(@"\{.*?\}", RegexOptions.IgnoreCase);
       
        MatchCollection matchList = exp.Matches(InputText);
        Match firstMatch = matchList[0];

        string myString = firstMatch.Value;
        myString = myString.Trim(new char[] {'{','}'});

        string[] split = myString.Split(new char[] { ',' });

        split[1] = split[1].TrimStart(new char[] { ' ' });
        Console.WriteLine(split[0]);
        Console.WriteLine(split[1]);
Avatar billede everclear Praktikant
12. juli 2008 - 14:49 #4
Har lige selv fået det til at virke på akkurat samme måde:-) Du skal naturligvis have point for svaret alligevel. Tak for det:-)
Avatar billede Zemich Nybegynder
12. juli 2008 - 14:57 #5
Så lidt :)
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