Avatar billede apo Praktikant
01. august 2005 - 17:05 Der er 14 kommentarer og
1 løsning

Del ord hvis over en bestemt længde

Hej :-)

Jeg har en kontaktformular, hvor jeg gerne vil have en funktion der indsætter mellemrum '<br>' hvis en streng/ordene er over en bestemt længde.

Jeg ved ikke hvordan jeg skal gribe det an, derfor spørger jeg her.

Strengen ser således ud: strAfsBesked

Apo
Avatar billede hiks Nybegynder
01. august 2005 - 17:24 #1
Avatar billede apo Praktikant
01. august 2005 - 17:47 #2
hiks > Jeg har forsøgt mig med Busschous løsning, men kan umiddelbart ikke få den til at virke:

Dim tjek, t, sz, nytekst, tekst, tekst1

function AddBR(str,sz)
  tjek = false
  for t=1 to Len(str)
      if (t mod sz) = 0 then
        if Mid(str,t,1) = " " then
            nytekst = nytekst & "<br>"
        else
            tjek = true
            nytekst = nytekst & Mid(str,t,1)
        end if
      else
        if Mid(str,t,1) = " " and tjek then
            nytekst = nytekst & "<br>"
        else
            nytekst = nytekst & Mid(str,t,1)
        end if
      end if
  next
  AddBR = nytekst
end function
tekst1 = strAfsBesked ' "her er en lang tekst som skal opdeles"
tekst = AddBR(tekst1,5)

Den indtastede tekst bliver godt nok udskrevet, men i en lang uendelighed - uden den ønskede opdeling :-/ Kan du se om jeg har gjort noget forkert?
Avatar billede apo Praktikant
01. august 2005 - 18:18 #3
hiks?
Avatar billede hiks Nybegynder
01. august 2005 - 18:36 #4
jeps tilbage igen...

vil du også have den til at dele selvom der ikke er noget mellemrum?

/hiks
Avatar billede apo Praktikant
01. august 2005 - 18:41 #5
Det var godt :-)

Meningen er at funktionen skal forhindre mit layout i at blive smadret hvis et formularresultat (Der vises som HTML) indeholder en lang streng. Hvordan det teknisk skal laves, ved jeg ikke.

Men det skal fungere på samme måde, som f.eks. her på E, hvor teksten ombrydes hvis den ellers ville have strukket designet.
Avatar billede apo Praktikant
01. august 2005 - 18:44 #6
Tester lige: ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Avatar billede apo Praktikant
01. august 2005 - 18:45 #7
Jep, det virker her på E :-)
Avatar billede apo Praktikant
01. august 2005 - 18:46 #8
Men er det egentlig server-sproget eller HTML'en der ombryder teksten her?
Avatar billede hiks Nybegynder
01. august 2005 - 18:46 #9
:o)

der er jo nogle html ting du kan sætte - såsom wrap på celler...

eks. (er ikke helt sikker på at den virker i alle browsere)

<td style='width:100;text-wrap:hard-wrap '>
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
</td>

prøv ellers også at google for CSS text wrapping

/hiks
Avatar billede hiks Nybegynder
01. august 2005 - 18:51 #10
Den med længden er jo lidt mere besværlig da ikke alle bogstaver har samme bredde. Så det bliver browseren der ligesom skal fortolke det også i forhold til om vinduet er resizet eller minimeret. Men derfor kan du jo godt forsøge at styre det lidt.

eksempelvis også ved at gemme det der er udenfor din bredde:

<span style="width:100; overflow:hidden"> </span>

viser ikke noget ud over 100px i bredden

/hiks
Avatar billede apo Praktikant
01. august 2005 - 18:51 #11
Ifølge W3C er det CSS3: http://www.w3.org/TR/2005/WD-css3-text-20050627/#text-wrap

Men så vidt jeg ved, virker CSS3 langt fra i alle browsere? IE understøtter det vist ikke endnu.
Avatar billede apo Praktikant
01. august 2005 - 18:56 #12
Nu har jeg prøvet med følgende:

<td style="width:360px;">
  <span style="width:360px; overflow:hidden;"><%=Replace(strAfsBesked, chr(13), "<br>")%></span></td>

Men det virker ikke :-/
Avatar billede apo Praktikant
01. august 2005 - 19:04 #13
... Men det fungerer hvis jeg udskifter <span> med <div> :-)

Jeg må nøjes med det som løsning. Det er jo også kun til brug i tilfælde af, at nogen skriver ualmindelige lange ord, hvilket kun sker hvis nogen forsøger at misbruge min kontaktformular til at sende volapyk (jkdsfjksdfjkfdsjkfdsjkdfs... osv.). De fleste normale mennesker opdeler ordene.

Jeg havde forsøgt mig med overflow:hidden, men havde sat den på en <td> = Ingen effekt. Jeg havde ikke tænkt på, at jeg kunne gøre brug af en div.

Hiks, smid et svar så scorer du pointene :-)
Avatar billede hiks Nybegynder
01. august 2005 - 19:48 #14
jeg smider lige et svar og så får du lige et link jeg lige fandt og har testet:

WordWrapped_String er funktionen du skal bruge i dette download:

posting:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=9253&lngWId=4

zip:
http://www.planet-source-code.com/vb/scripts/ShowZip.asp?lngWId=4&lngCodeId=9253&strZipAccessCode=tp%2FW92534972

Der mangler bare en parantes i linie 183 - men det skulle være til at overskue - har testet med følgende:

Response.write WordWrapped_String("jaksdlfæjaskfjæaslkfdjælk", 5, "<br>", true)

hvilket giver følgende output:
jaks-
dlfæ-
jask-
fjæa-
slkf-
djælk

og det blev vist det endelige svar! :o)

/hiks
Avatar billede apo Praktikant
01. august 2005 - 19:58 #15
Nice, så kan jeg lave en kombination, hvor overflow:hidden; sikrer, at layoutet bliver hvor det skal, hvis wordwrap-funktionen skulle svigte.

Tak for hjælpen, der er points på vej i din retning :-)

// Lukker

Apo
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