Avatar billede lund_dk Praktikant
27. juni 2005 - 10:30 Der er 15 kommentarer og
1 løsning

Splitte string op i 2

Hvordan gør jeg det smartest?

Har en string som skal fordeles jævnt i 2 kolonner, bogen som har bud på hvordan jeg kan gøre det ?

<table>
<tr>
  <td>Del 1</td>
  <td>Del 2</td>
</tr>
</table>
Avatar billede jpvj Nybegynder
27. juni 2005 - 10:36 #1
Er det opdelingen du vil have at vide?

Skal det blot deles på midten?
Avatar billede thesurfer Nybegynder
27. juni 2005 - 10:36 #2
<%
dim streng, del_1, del_2

streng = "en meget lang streng bla bla bla"

del_1 = left(streng, len(streng) / 2)
del_2 = mid(streng, len(streng) / 2) + 1)

<table>
<tr>
<td><%=del_1%></td>
<td><%=del_2%></td>
</tr>
</table>

"<%=" er en forkertelse for "<% response.write"..

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 10:37 #3
rettelse:

<%
dim streng, del_1, del_2

streng = "en meget lang streng bla bla bla"

del_1 = left(streng, len(streng) / 2)
del_2 = mid(streng, len(streng) / 2) + 1)
%>

<table>
<tr>
<td><%=del_1%></td>
<td><%=del_2%></td>
</tr>
</table>

"<%=" er en forkertelse for "<% response.write"..

"+1" i mid er muligvis overflødig.. kan aldrig huske det :-)

/theSurfer
Avatar billede busschou Praktikant
27. juni 2005 - 10:48 #4
thesurfer´s metode vil så dele evt ord
På den måde får du den meste "jævne" fordeling
Hvis du ønsker at ord ikke skal deles, så må du i stedet tælle dig frem til cirka midten :o)
Avatar billede lund_dk Praktikant
27. juni 2005 - 10:59 #5
Får denne fejl

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0401)
Slut på sætning var ventet
/Carina Ny/defaulttest.asp, line 58, column 40
del_2 = mid(streng, len(streng) / 2) + 1)
---------------------------------------^
Avatar billede lund_dk Praktikant
27. juni 2005 - 11:04 #6
Fandt fejlen ;)

Men ville være smart hvis den ikke delte midt i et ord.
Avatar billede thesurfer Nybegynder
27. juni 2005 - 13:31 #7
Jeg mener at have set et eksempel, hvor der blev brugt RegExp..

/theSurfer
Avatar billede thesurfer Nybegynder
27. juni 2005 - 13:56 #8
..synes ikke lige at jeg kan finde det..

/theSurfer
Avatar billede musicchart.dk Nybegynder
27. juni 2005 - 15:59 #9
Hvad skal du bruge det til?
Det kan jo være der er en nemmere måde at komme frem til det resultat du skal bruge :o)
Avatar billede cpufan Juniormester
27. juni 2005 - 17:30 #10
den er godt nok ikke afprøvet.........

men så vidt jeg kan se burde det virke

<%
dim streng, del_1, del_2

streng = "en meget lang streng bla bla bla"
midt = len(streng)/2
if midt > 12 then
counter = 0
while counter < midt + 6
mellemrum = Instr(mid(streng,counter)," ")
counter = counter + mellemrum
wend
mellemrum = mellemrum + counter
end if
del_1 = left(streng, mellemrum)
del_2 = mid(streng, mellemrum + 1)
%>

<table>
<tr>
<td><%=del_1%></td>
<td><%=del_2%></td>
</tr>
</table>
Avatar billede cpufan Juniormester
27. juni 2005 - 17:49 #11
tja, det burde nok være testet, for det var fuld af fejl.

men anyway nedenstående virker

<%
dim streng, del_1, del_2

streng = "en meget lang streng bla bla bla som skal være meget længere for at dette fungerer"
midt = len(streng)/2
if midt > 10 then
counter = 0
while counter < midt
mellemrum = Instr(right(streng,len(streng)-counter)," ")
counter = counter + mellemrum
wend
end if
del_1 = left(streng, counter)
del_2 = mid(streng, counter + 1,len(streng)-counter)


response.write"<table><tr><td>"& del_1
response.write"</td></tr><tr><td>"&del_2
response.write"</td></tr></table>"
%>
Avatar billede cpufan Juniormester
27. juni 2005 - 17:53 #12
suk....

den korte version uden kontrol af tekstlængde

streng = "en meget lang streng bla bla bla som skal være meget længere for at dette fungerer"
midt = len(streng)/2
counter = 0
while counter < midt
mellemrum = Instr(right(streng,len(streng)-counter)," ")
counter = counter + mellemrum
wend
del_1 = left(streng, counter)
del_2 = mid(streng, counter + 1,len(streng)-counter)

og med kontrol skal der lige ændres så det ser sådan ud:

streng = "en meget lang streng bla bla bla som skal være meget længere for at dette fungerer"
midt = len(streng)/2
counter = 0
if midt > 10 then
while counter < midt
mellemrum = Instr(right(streng,len(streng)-counter)," ")
counter = counter + mellemrum
wend
end if
del_1 = left(streng, counter)
del_2 = mid(streng, counter + 1,len(streng)-counter)
Avatar billede thesurfer Nybegynder
28. juni 2005 - 20:43 #13
Hvad mener du med "kontrol af tekstlængde"..?


Det kan gøres nemt og overskueligt:

a = split(streng, " ")

for i = 0 to CInt(ubound(a) / 2)
del_1 = del_1 & a(i) & " "
next

for i = CInt(ubound(a) / 2) + 1 to ubound(a)
del_2 = del_2 & a(i) & " "
next

del_1 = left(del_1, len(del_1) - 1)
del_2 = left(del_2, len(del_2) - 1)


Så kan man gøre hvad man vil, med del_1 og del_2 .. f.eks:

<table>
<tr>
  <td><%=del_1%></td>
  <td><%=del_2%></td>
</tr>
</table>

/theSurfer
Avatar billede thesurfer Nybegynder
28. juni 2005 - 21:09 #14
hmm.. den kan faktisk forkortes yderligere.. men den bliver en smule uoverskuelig..

a = split(trim(streng), " ")

for i = 0 to CInt(ubound(a) / 2)
del_1 = del_1 & a(i) & " "
if i + CInt(ubound(a) / 2) < ubound(a) then del_2 = del_2 & a(i + CInt(ubound(a) / 2) + 1) & " "
next

del_1 = left(del_1, len(del_1) - 1)
del_2 = left(del_2, len(del_2) - 1)


Hvis man vil lave koden kortere, kan man indsætte værdierne direkte i koden ... :-)

/theSurfer
Avatar billede cpufan Juniormester
17. juli 2005 - 20:51 #15
med kontrol af tekstlængde mener jeg blot at der ingen grund er til at dele en lille tekst og i 2 tabeller, men denne kan jo udelades.

jeg har så også lige forkortet min udgave lidt nu:

din deler teksten i 2 dele med lige mange ord i hver,
mens min deler teksten med lige mange bogstaver i hver (ved et mellemrum).

counter = 0
while counter < len(streng)/2
mellemrum = Instr(right(streng,len(streng)-counter)," ")
counter = counter + mellemrum
wend
del_1 = left(streng, counter)
del_2 = mid(streng, counter + 1,len(streng)-counter)
Avatar billede thesurfer Nybegynder
18. juli 2005 - 21:53 #16
Jeg tror at vi lige skal have noget feedback, fra lund_dk..

/theSurfer
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