14. oktober 2005 - 12:09Der er
57 kommentarer og 1 løsning
Replace vbCrlf
Hej
Jeg skal smide noget tekst i en database og skal derfor have skiftet vbCrlf ud med et <br> og omvendt. men kan ikke få det til at virke, jeg bruger nemlig ikke Vbscript men Jscript. er der nogle der kan hjælpe
Det ser egentlig korrekt ud, men det kan være du SKAL bruge regular expressions (selvom MS-dokumentationen for JScript's replace siger at det er OK med en streng).
Tekst1 = Tekst.replace(/\n/g, "<br>");
Det lyder dog lidt som om Tekst ikke er en streng (idet fejlen melder at funktionen ikke understøttes af det aktuelle objekt). Er du sikker på at variablen Tekst det en streng?
Jeg skal jo spørge, men du er opmærksom på at JScript er case-sensitivt, ikk'?
OK, men umiddelbart skal du sikre dig at Tekstform rent faktisk returnerer en streng, eller i det mindste at Tekst ikke er udefineret. Det kan du gøre ved at foretage flg. check inden du foretager replace:
men det er underligt, for jeg har brugt denne sætning før, og det har virket fint billeder1 = billeder1.replace("Oe", "Ø", "");. kan det havde noget med den server det ligger på at gøre, altså at den ikke understøtter det
Jeg har sådan en eller anden religiøs holdning til at bruge den korte form til hente data ud af request-objektet med - jeg synes ikke det er optimalt og vil ikke anbefale det hvis man ved hvor data skal hentes fra, for det performer dårligere, idet Request-objektet søger igennem alle sine collections for at finde det man søger. Brug i stedet den direkte vej:
Prøv lige at vise den form du poster. Det lyder super meget som om feltet ikke eksisterer, men jeg synes du undgår at svare på om der er indhold i feltet...
function objTest(obj){ var i, t, s = ""; // Create variables. t = new Array(); // Create an array. t["Date"] = Date; // Populate the array. t["Object"] = Object; t["Array"] = Array; t["String"] = String; for (i in t) { if (obj instanceof t[i]) // Check class of obj. { s += "obj is an instance of " + i + "\n"; } else { s += "obj is not an instance of " + i + "\n"; } } return(s); // Return string. }
var Tekst = Request.Form("TekstForm"); Response.Write(objTest(Tekst));
Hvis jeg må indskyde noget så vil jeg ikke benytte mig af den metode du vil bruge.
Jeg ville putte teksten fra tekstfeltet ned i databasen efter et par moduleringer, som fx. replace(tekst,"'","''") så du undgår en databasefejl ved insert.
Dernæst vil jeg først replace vbCrlf når jeg vil udskrive teksten. Det spare en oprydning + hvis du senere skal redigere teksten i et tekstfelt skal du ikke lave <br> om til vbCrlf eller \n.
Jeg fatter ikke en reje!?? Jeg kan ikke lige gennemskue hvad der går galt.
Jeg er enig med thomas_yde mht. metoden, men siden du insisterer på at dette skal gøres vil jeg jo gerne se om jeg kunne hjælpe dig med at få det til at fungere... hvilket så ikke lykkes særlig godt :|
hvis vi gør det på den anden måde. så henter jeg data ud fra databasen. gemmer det i en variable der hedder "Tekst" og laver en replace på den. Tekst1 = Tekst.replace(/\n/g, "<br>"); Response.write(Tekst); eller hvordan?
Det har den anden fordel, at hvis dine data skal bruges andre steder end i html på et tidspunkt, så har du ingen problemer med htmlkoder.
Du kan vælge at gemme teksten i html i databasen, hvis du vil gemme det formatteret, med fed skrift eller kursiv, eller punktopstillinger, tabeller osv.
Jeg har lige et andet spørgsmål, når jeg bruger denne sætning Tekst1 = Tekst.replace("\n", "<br>", "");
laver den kun et <br> ved det første "enter" skift. altså: Dette er en test ------------ hvor det skulle have set sådan ud: Dette er en test -------- hvad er det galt?
det ved jeg ikke, men det virker. jeg må hellere sætte det ind. tak :)
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.