Avatar billede bombur Nybegynder
23. maj 2003 - 12:23 Der er 11 kommentarer og
1 løsning

Tælling af linieskift JScript

Jeg skal have tjekket en tekst, som ligger i en variabel "tekst", for antal linieskift. Da jeg hiver den ud fra en database tror jeg nok det er noget med at tælle hvor mange "\n" der er i teksten. Men jeg ved ikke hvordan jeg går igennem en tekst.
Jeg har prøvet:

function antalskift(tekst) {
    antal = 0
    while(tekst.indexOf("\n",0)>-1) {
    antal = antal + 1
   
    }
    return(antal)
}
Men den siger at jeg ikke må gøre det i while linien.

Rune
Avatar billede oasen Nybegynder
23. maj 2003 - 13:38 #1
Tjek for vbCrlf i stedet.
Avatar billede bombur Nybegynder
23. maj 2003 - 13:49 #2
Nej det er ikke nok... samme fejl

Error Type:
Microsoft JScript runtime (0x800A01B6)
Object doesn't support this property or method
/mm12014/rune/funktioner.asp, line 23

function antalskift(tekst) {
antal = 0
(LINE 23)while(tekst.indexOf("vbCrlf",0)>-1) {
antal = antal + 1
}
return(antal)
}
Avatar billede eagleeye Praktikant
23. maj 2003 - 14:39 #3
Hvis du spilter på \n og bruger length så får du antallet.:

function antalskift(tekst) {
    arr = tekst.split("\n");
    antal = arr.length;
    return(antal)
}
Avatar billede bombur Nybegynder
23. maj 2003 - 15:20 #4
Object doesn't support this property or method
/mm12014/rune/funktioner.asp, line 22

Line 22 --> arr = tekst.split("\n");
Avatar billede bombur Nybegynder
23. maj 2003 - 17:05 #5
Jeg har stadig ikke fundet ud af det! :)
Så i må gerne prøve at svare!
Avatar billede eagleeye Praktikant
23. maj 2003 - 17:11 #6
Dette virker fint på min.:

function antalskift(tekst) {
    arr = tekst.split("\n");
    antal = arr.length;
    return(antal);
}


Response.Write (antalskift("Hej\nigen"));
Avatar billede bombur Nybegynder
23. maj 2003 - 19:11 #7
Ok... har testet det på din måde og det virker ja. Men det virker ikke når jeg bruger en variabel hvori min tekst fra databasen ligger... så får jeg den ovenstående fejl! Det forstår jeg ikke!

tekst = indRS.Fields("tekst");
               
function antalskift(tekst) {
arr = tekst.split("\n");
antal = arr.length;
return(antal);
}
skift = antalskift(tekst)
Avatar billede eagleeye Praktikant
23. maj 2003 - 19:29 #8
Prøv at tilføje .value på recordsetet:

tekst = indRS.Fields("tekst").Value;
Avatar billede bombur Nybegynder
23. maj 2003 - 20:04 #9
Nu har jeg fået den del til at virke!
Sådan gjorde jeg
function antalskift(tekst) {
tekst=Server.HtmlEncode(tekst)
    arr = tekst.split("\n");
    antal = arr.length;
    return(antal);
}
Så du har fortjent dine point.
Men når jeg har det til at virke FUCKER den på een eller anden måde indholdet af min variabel! Hvis jeg kører variablen igennem funktionen vil den ikke skrive variablens indhold ud!! på nogen måde! Det er ikke praktisk
Avatar billede bombur Nybegynder
23. maj 2003 - 20:05 #10
Grunden til at jeg ikke forstår det er at når jeg kører variablen igennem funktionen ser det sådan her ud:

tek = indRS.Fields("tekst");
skift = antalskift(tek)

Og som man tydeligt kan se ændrer jeg ingenting på den originale variabel!
Avatar billede eagleeye Praktikant
23. maj 2003 - 20:08 #11
Har du prøvet som jeg forslå at sætte .Value på recordset ??
For denne
tek = indRS.Fields("tekst");
ligger vel et objectet Fields("tekst") ind i variablen, hvorimod

tek = indRS.Fields("tekst").Value;

Ligger teskten ind i variablen.

Jeg har lige prøvet og uden .Values får jeg også den fejl du beskrev men med .Value virker det uden fejl.
Avatar billede bombur Nybegynder
23. maj 2003 - 20:53 #12
Jeg tillader mig lige at fordoble pointsene! :)
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