Avatar billede montago Praktikant
03. oktober 2007 - 14:23 Der er 4 kommentarer og
1 løsning

Regex.replace med egen MatchEvaluator Delegate

Javascript er det niceste sprog nogensinde, man kan skrive:
//jscript
str = "something something"
str.replace(/(som)(thin)(g)/gi, function($0,$1,$2,$3){
  return Func($1) + AnotherFunc($2) + $3;
})

i asp.net / C# er man lyksagelig endt op med at kunne bruge en Delegate som tilnærmelsesvis gør det samme:

//C#
string str = "asdasd asd asd asd asd asd ";
Regex reg = new Regex(@"(as)(d)");
str = reg.replace(str, new MatchEvaluator(Class.Method)

private static string Method(match m){
  return m.ToString();
}


Hvordan een i helvede kan jeg parse flere objekter/informationer ned til min matchevaluator ??

Den er static og kan derfor ikke kommunikere med det objekt jeg oprindeligt er igang med at manipulere...

Delegate'n tager kun een parameter: Match...

What to do ?!?
Avatar billede montago Praktikant
03. oktober 2007 - 15:33 #1
hmm...

tilsyneladende er den funktion der kalde i Javascript i et andet scope... og gør derfor nøjagtig det samme som en MatchEvaluator

mit mål er at kunne parse en parameter yderligere til MatchEvaluatoren end blot Match'en...
Avatar billede pidgeot Nybegynder
03. oktober 2007 - 15:40 #2
Hvad er det for en parameter du vil passe? Dit Match-objekt har properties til at tilgå de enkelte capturing groups, så hvis det er for at replikere dit JavaScript-eksempel skulle det kunne gøres sådan her:

private static string Method(Match m) {
  return Func(m.Groups[1]) + AnotherFunc(m.Groups[2]) + m.Groups[3];
}
Avatar billede montago Praktikant
03. oktober 2007 - 15:43 #3
hmmm det kan man skudda ik...

Delegaten ville ikke vide hvor den skulle få parameter 2 fra, idet metoden som kalder er statisk...

ffs !!
Avatar billede montago Praktikant
03. oktober 2007 - 15:44 #4
hey Pidgeot..

det var ikke lige hvad jeg søgte... dét jeg vil er umuligt
Avatar billede nielle Nybegynder
03. oktober 2007 - 15:59 #5
Du kan jo eventuelt sende den "ved siden af" til din Method som en static variabel.
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