Avatar billede donkazz Nybegynder
17. november 2005 - 09:30 Der er 12 kommentarer og
2 løsninger

Simpel replace funktion til at erstatte font med span?

Hej...

Jeg sidder og roder rundt i et forholdsvis begrænset opdateringsmodul, som næsten indsætter flere dumme koder ind end hvis man lavede en hjemmeside i Word.

Problemet er at de font-størrelser man kan vælge, er -2, -1, 1, osv. Det er jo ikke praktisk.

Nu har jeg så siddet og luret lidt på regular expressions, men jeg fatter slet ikke hvordan man definerer de patterns der. Det er ikke logisk for mig.

Hvordan vil en replace funktion med reg. exp, der tager en hel string, og erstatter eksempelvis <font size=-2 color=#c0c0c0> med <span style="color: #c0c0c0; font-size: 10px;"> og samtidigt erstatter </font> med </span>?

Og nu hvor vi er i gang, så sletter alle <TBODY> og </TBODY> tags, da de overflødige. :-D

Jeg går ud fra at funktionen er noget der bliver kaldt når man gemmer sin ASP side via. opdateringsmodulet, så det er vel ikke muligt at se ændringerne i sin IFRAME mens man formaterer? Lige nu bruger den den her til at ændre font-størrelsen i IFRAMEN kaldet myEditor:

onChange="java script:var i = this.selectedIndex;doFormat('FontSize',this.options[i].value);document.myEditorForm.fontsize.selectedIndex=0;"

og doFormat ser sådan her ud:

function doFormat(command,argument) {
    frames.myEditor.focus()
    var tr = frames.myEditor.document.selection.createRange();
    tr.execCommand(command,false, argument)
    tr.select()
    frames.myEditor.focus()
}
Avatar billede donkazz Nybegynder
17. november 2005 - 09:31 #1
"Hvordan vil en replace funktion SE UD" - ups, er træt - glemte :-)
Avatar billede roenving Novice
17. november 2005 - 10:48 #2
tbody-tags er absolut ikke overflødige, de er faktisk obligatoriske for at renderingsmaskinerne kan tegne tabellerne ordentligt, så de indsættes automatisk af alle browsere, hvis man ikke selv har indsat dem !o]

-- og så gemte du en væsentlig oplysning midt inde i teksten, da du sikkert i asp har brug for det til vbscript, som jeg ikke er inde i ...

-- jeg kan ikke forestille mig, at det er muligt at gøre det i et hug, og slet ikke med forskellige variabler (hrm, tjah, måske kan der laves noget søgning, som jeg ikke har fod på !-)

Men et søgepattern kan f.eks. se sådan ud:

"<font size=-2 color=#([a-z\d]{6})>([^<]*?)</font>"

-- så skal reg.IgnoreCase og reg.Global sættes til true og strengen erstattes med:

"<span style='color:#$1; font-size: 10px;'>$2</span>"

regexp-variablerne $1 og $2 ved jeg ikke hvordan skrives i vbscript, så der må du f.eks. ty til msdn el.
Avatar billede donkazz Nybegynder
17. november 2005 - 12:59 #3
Oh ... ja det er ASP og VBScript jeg kører det i...

Er tbody ikke overflødige? Jeg synes aldrig jeg ser nogen bruge dem.. så jeg tænkte at det var et fortidslevn.. Whatta ya know.. :)

Hvordan fungerer det pattern der? Det kunne være rart at nogenlunde forstå det, så jeg evt. kan lære noget af det.. :)

F.eks, hvordan ved den "<span style='color:#$1 at det er farvekoden den skal tage, og f.eks. ikke indsætte nr 2 variabel.. og hvordan defineres de oppe i pattern?
Avatar billede roenving Novice
17. november 2005 - 13:11 #4
() bruges til at gruppere (op til 9 grupper !-) med, og en gruppe kan uddrages som en variabel, og endda genbruges inden for den samme regexp !o]

I det ovenstående pattern er der kun følgende specialiteter ellers fungerer det bare ved at genkende tegnene bogstaveligt ...

([a-z\d]{6})
Hov, det skulle være [a-f\d] !-)

Det betyder, at der skal være præcis 6 {6} tegn, som forekommer i intervallet a-f eller er et tal (\d - digit)

[] bruges til sætte enkelttegn lige gyldige, altså en slags a eller b eller c eller ...

([^<]*?)

^ inde i [] betyder Not in, altså skal den tage et vilkårligt antal (* betyder 0 eller flere) tegn, som ikke er < ...

? betyder non-greedy, dvs. at den stopper ved den første forekomst af <-tegnet; normalt er regexps nemlig greedy, de forsøger at matche så meget som muligt.

-- og du skal være opmærksom på, at specialtegn måske skal escapes, f.eks. er det i ovenstående nødvendigt at skrive \\d, hvis den skal bruges i en javascript RegExp-constructor
Avatar billede donkazz Nybegynder
17. november 2005 - 13:36 #5
Aaah nice, det forstår jeg nogenlunde... Men lad os nu sige at der er flere forskellige <font> tags i dokumentet.. Nogle der definerer både color og size, og andre der måske kun definerer size eller color. Så er der jo lige pludseligt flere forskellige patterns.. Hvad gør man så?
Avatar billede roenving Novice
17. november 2005 - 13:40 #6
Det var det, jeg mente med, at det ikke kan klares i et hug, hvis du skal bruge værdierne til noget !-)
Avatar billede donkazz Nybegynder
17. november 2005 - 15:03 #7
Aaaah.... Da jeg endeligt havde luret at dine !-) og !o] var smileys, blev det hele lidt mere overskueligt. ;-D

Hvad vil du anbefale jeg så gør hvis jeg skal have flere patterns?
Avatar billede roenving Novice
22. november 2005 - 02:03 #8
Tage dem een ad gangen, men det bliver lynhurtigt uoverskueligt, hvis du f.eks. både kan have absolutte og relative sizes ...

-- i javascript ville jeg nok lave en anden form for genkendelse, og så lave noget iterering gennem delstrengene, der kunne oversætte !-)
Avatar billede donkazz Nybegynder
22. november 2005 - 09:16 #9
Så det du siger er, at jeg egentligt var bedst tjent med at skaffe en helt ny editor til mit CMS som ikke laver skod-kode? :)
Avatar billede roenving Novice
22. november 2005 - 16:22 #10
Tjoh ...

-- det er ikke helt forkert forstået, også fordi den slags formattering er på vej ud !-)
Avatar billede donkazz Nybegynder
22. november 2005 - 18:28 #11
Jo tak det er jeg klar over.. jeg synes bare ikke det ligefrem vrimler med editorere til CMS der er W3C kompatible eller som man kan bruge acceptabelt... i hvert fald ikke i forbindelse med ASP... Du har tilfældigvis ingen ledetråde?

Anyways, smid et svar så du kan få point for hjælpen. :)
Avatar billede roenving Novice
22. november 2005 - 22:18 #12
Tjah, du kan jo stikke mig 15-30 point, men du skal absolut selv beholde langt de fleste !-)

-- og du har helt ret med editorer, stort set alle, inklusive M$ dhtml-editor skriver elendig html3.2-kode, hvilket ikke er det smarteste, hvis man prøver at skrive en god mark-up ,-(
Avatar billede donkazz Nybegynder
23. november 2005 - 09:12 #13
Det gør jeg så. :) Tak for hjælpen...
Avatar billede roenving Novice
23. november 2005 - 13:11 #14
-- og jeg takker for point ;~}
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
Kurser inden for grundlæggende programmering

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