20. september 2001 - 09:02Der er
41 kommentarer og 2 løsninger
Streng manipulation
Jeg har en tekst der eksempelvis kan se således ud:
text = \"<P>Her er lidt tekst</P> <P><OBJECT id=QFGAv4kiSkjcUcCMdiQJ name=Stamdata/Navn data=Files/condition.asp width=935 height=66 type=text/x-scriptlet></OBJECT></P> <P><OBJECT id=QFGAv4kiSkjcUcCMdiQJ name=Stamdata/Navn data=Files/condition.asp width=935 height=66 type=text/x-scriptlet></OBJECT></P> <P>Og lidt mere tekst</P> <P><OBJECT id=QFGAv4kiSkjcUcCMdiQJ name=Stamdata/Navn data=Files/condition.asp width=935 height=66 type=text/x-scriptlet></OBJECT></P>\"
Hvordan kan jeg indsætte glyffer omkring alle attributter på alle mine <object> tags så teksten kommer til at se sådan ud: (Det skal lige siges, at der kan være et vilkårligt antal <object> tags!)
text = \"<P>Her er lidt tekst</P> <P><OBJECT id=\"QFGAv4kiSkjcUcCMdiQJ\" name=\"Stamdata/Navn\" data=\"Files/condition.asp\" width=\"935\" height=\"66\" type=\"text/x-scriptlet\"></OBJECT></P> <P><OBJECT id=\"QFGAv4kiSkjcUcCMdiQJ\" name=\"Stamdata/Navn\" data=\"Files/condition.asp\" width=\"935\" height=\"66\" type=\"text/x-scriptlet\"></OBJECT></P> <P>Og lidt mere tekst</P> <P><OBJECT id=\"QFGAv4kiSkjcUcCMdiQJ\" name=\"Stamdata/Navn\" data=\"Files/condition.asp\" width=\"935\" height=\"66\" type=\"text/x-scriptlet\"></OBJECT></P>\"
Det er ligegyldigt for html-filen om du skriver \" eller \' omkring parametrene. Du skal blot sikre dig at du ikke kommer til at bruge samme slags citat-tengn inden i den parameter.
Så hvis filen genereres med ASP kan du blot skrive de ser \' tegn der du vil have dem.
herchin >> vi to kommer ånebart fra to forskellige solsystemer...det er anden gang indenfor et par dage, jeg ikke fatter, hvad du spørger om...!?!?!?!? Det kunne ikke interessere mig mindre, hvad du skal bruge det til - men jeg aner ikke, hvad du spørger om =) /mvh
Eller er det bare mig, der kommer fra et andet solsystem(?): \"herchin >> vi to kommer ånebart...\" *LooOooL* Nu forstår jeg til gengæld, hvad du mener! =oD
Det kan lettest laves med nogle regulære udtryk...det er jakoba bedre på end jeg (hvem er ikke det?...hehe!) Du skal lave en lille funktion, der kan genkende de forskellige attributnavne, efterfulgt af \'=\' og en række tilfældige tegn. Disse tegn skal der så sættes gåseøjne omkring. Det kan gøres med loops/if-sætninger, og noget - men RegExp vil være mere sexy at bruge her :) /mvh
hershin >> din funktion ser ud til at virke, men hvis der er mange lange filer der skal behandles vil det tage laaang tid.
vi kan nøjes med en enket replace for hver parameter:
<script language=\'javascript\'>
var dinStreng = ?; // stop din lange streng ind her. // og kald funktionen fixStreng.
function fixParam ( navn, verdi ) { // hjælpefunktion var re = new Regexp( navn+\"=\"+verdi, \"gi\" ); var subst = navn +\"=\'\" +verdi +\"\'\"; dinStreng = dinStreng.replace( re, subst ); }; //end fixParam ( string, string )
function fixStreng ( ) { // initier variablen dinStreng før kald.
// ret linierne herunder til så de passer med dine attribut-navne og parametre fixParam( \"id\", \"QFGAv4kiSkjcUcCMdiQJ\" ); fixParam( \"name\", \"Stamdata/Navn\" ); // se note 1 nedenfor ! fixParam( \"data\", \"Files/condition.asp\" ); fixParam( \"width\", \"935\" ); // se note 2 nedenfor. fixParam( \"height\", \"66\" ); // se note 2 nedenfor. fixParam( \"type\", \"text/x-scriptlet\" );
]; //end fixStreng ( )
// efter kald til fixStreng() indeholder variablen dinStreng den // konverterede streng med \' om parameterværdierne.
</script>
note 1: værdien \"Stamdata/Navn\" er ikke et lovligt javascript navn, og vil give problemer hvis du prøver at bruge det som navn i javascript (bliver set som at variablen Stamdata skal divideres med variablen Navn).
note 2: Såvidt jeg ved kræver html-standarden ikke at der skrives \' omkring numeriske parametre. Jeg ville udelade fixParam på width og height.
Løsningen går ud fra at alle dine parametre gentages (eg: alle height parametre er 66) Hvis der kun er få undtagelser kan du lave extra linier for parametre der er forskellige: fixParam( \"height\", \"66\" ); // de fleste er 66 fixParam( \"height\", \"55\" ); // men der er også nogen der er 55 men hvis der er masser af undtagelser er \'løsningen\' ovenfor ligeså besværlig som at rette i hånden; der skal laves en linie i funktionen fixStreng for hver forskellig parameterværdi :(
fx: 1) det er ikke blot den linie der skal fixes, det er også en masse andre html-parametre i andre kommandoer. 2) \"<OBJECT id=\" er fast, det står der altid 3) \"navn=Stamdata/Navn\" er altid det der står i den parameter 4) id= værdien har formatet \"QFG?????S?????CM??QJ\" hvor de bogstaver der er skrevet som ? kan variere.
jeg tror stadig det kan fixes nemmere med regexp\'s men nu skal vi have den rigtige ekspert igang. Han hedder jumper.
jeg prøver at tvigge ham.
PS: min PC er nu gået totalt istå 2 gange mens jeg kikkede på det her spm (med NS6). og aldrig ellers. Der kan være mange andre grunde, men jeg vil holde mig væk til jeg ved noget mere om hvad der foregår.
Øhhhhh - det fatter jeg jo ikke ;o) Det virker altså ikke helt som det skal, men det er faktisk tæt på!!! Den efterlader dog \"style\" og sætter nogle forkerte \'.
<P>Her er lidt tekst</P><P><OBJECT id=nJqBy3wmlw79powqc7Rt style=\"LEFT: 5px; WIDTH: 935px; TOP: 5px; HEIGHT: 66px\" name=Stamdata/NAVN data=Files/condition.asp width=935 height=66 type=text/x-scriptlet></OBJECT></P><P>Her er lidt tekst</P><P>Her er lidt tekst</P><P> </P><P><OBJECT id=Eep2JJR3HYUTIX2nl5Ca style=\"LEFT: 5px; WIDTH: 935px; TOP: 128px; HEIGHT: 66px\" name=Kontakt/EMAILACCEPT data=Files/condition.asp width=935 height=66 type=text/x-scriptlet></OBJECT></P><P>Her er lidt tekst</P><P> </P><OBJECT id=BJ9dENWxtXhbLFqWCiHb name=Kontakt/EMAILACCEPT data=Files/condition.asp width=935 height=66 type=text/x-scriptlet></OBJECT><P>Her er lidt tekst</P><P>Her er lidt tekst</P>
Og sådan skal den se ud: (Læg mærke til \' og <P> og </P> og styles)
<P>Her er lidt tekst</P><P><OBJECT id=\'nJqBy3wmlw79powqc7Rt\' name=\'Stamdata/NAVN\' data=\'Files/condition.asp\' width=\'935\' height=\'66\' type=\'text/x-scriptlet\'></OBJECT></P><P>Her er lidt tekst</P><P>Her er lidt tekst</P><P> </P><P><OBJECT id=\'Eep2JJR3HYUTIX2nl5Ca\' name=\'Kontakt/EMAILACCEPT\' data=\'Files/condition.asp\' width=\'935\' height=\'66\' type=\'text/x-scriptlet\'></OBJECT></P><P>Her er lidt tekst</P><P> </P><P><OBJECT id=\'BJ9dENWxtXhbLFqWCiHb\' name=\'Kontakt/EMAILACCEPT\' data=\'Files/condition.asp\' width=\'935\' height=\'66\' type=\'text/x-scriptlet\'></OBJECT></P><P>Her er lidt tekst</P><P>Her er lidt tekst</P>
Meget sejt. :-)) og points fik man ovenikøbet. takker
Synes godt om
Ny brugerNybegynder
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.