Sök på tekniken.nu

Om tekniken.nu

På tekniken.nu bloggar Iteams konsulter om det som ligger dem varmast om hjärtat - teknik.
www.iteam.se

Prenumerera på tekniken.nu

Bloggportalen.se
Bloggtoppen.se
Top Datorer bloggar
Web Analytics

Clicky

En självklarhet!
Teknikbloggen logotype

Använd flera parametrar i MatchEvaluator

2010-06-02 11:00 - Utvecklingstips av Tommy Söderström
Tommy Söderström
Tommy Söderström
Systemutvecklare
Iteam

För att enkelt skicka in parametrar till MatchEvaluator så använder man bäst lambda-uttryck. Såhär gör man:

När man använder RegEx för att ersätta delar i en text så använder man ofta MatchEvaluator för att modifiera den nya strängen. Det kan handla om allt från enkla ändringar som t.ex stor bokstav i början av ett ord till mer komplexa ändringar som att byta ut markeringstext mot dynamiskt genererat innehåll eller att byta ut Youtube-länkar mot embedkod som visar en filmspelare.

Problemet är att den vanliga delegate-typen för MatchEvaluator bara tar en enda parameter och för att komma runt denna begränsning måste man skapa en egen delegate, vilket känns omständigt. Med hjälp av lambda-uttryck så går det dock enkelt och man får en snygg och tydlig kod.

Såhär ser själva anropet och metoden som hanterar logiken ut. I exemplet så är HTML ett stycke HTML-kod, imageRegex ett utryck som hämtar ut bildtaggar i HTML och pageData en EPiServer-sida som innehåller värden som jag behöver för att ersätta bildtaggen med en korrekt ny bildtagg.

Regex.Replace(html, imageRegex, match => ImageReplacer(match, pageData));

protected string ImageReplacer(Match match,PageData pageData)

{
  //TODO: Use pagedata to lookup new value for this match
  return match.Value;
}

... och du vet väl att Iteam just nu söker duktiga medarbetare? Läs mer på iteam.se

Andra bloggar om:
2010-06-03 11:00 av Christian
Fantastiskt! Jag hade detta problem häromdagen och fick göra en fullösning. Ren magi Tommy.

Kommentera

Namn

Email

URL

Kommentar

Skriv vad som står i bilden till höger