Avatar billede EveryMA Mester
27. august 2017 - 16:15 Der er 6 kommentarer og
1 løsning

Insæt tekst efter linjeskift

Hej.
(ASP CLASSIC!)

Jeg søger en funktion, der går ind og finder det første linjeskift i en tekst (linjeskift via <p> eller <br>) og derefter indsætter en tekst. Teksten der indsættes er altid den samme. Så den skal egentlig bare finde det første linjeskift og derefter indsætte noget tekst før den originale tekst fortsætter, hvis det giver mening.

Jeg tænker i Split eller inStr, men jeg kan ikke rigtig tænke mig frem til det.
Avatar billede claes57 Ekspert
27. august 2017 - 19:44 #1
det bliver noget i stil med
<%
' den originale tekst er i TekstOld
posbr = instr("<br>",lcase(TekstOld))
posp  = instr("<p>",lcase(TekstOld))
if posp > 0 and posp < posbr then
' der kommer et <p> først
  klip = posp
  lgd = 3
else
'der kommer et <br> først
  klip = popbr
  lgd = 4
end if
TekstNy = left(TekstOld, klip-1+lgd) & "Den Nye Tekst" & right(TekstOld, len(TekstOld)-klip+lgd)
' TekstNy er tilrettet og klar
%>
Avatar billede EveryMA Mester
31. august 2017 - 19:29 #2
den forsøger jeg lige i næste omgang.

det skal kun være <br> ikke <p>. ved ikke lige hvorfor jeg fik det med
Avatar billede claes57 Ekspert
01. september 2017 - 09:53 #3
så kan det reduceres til
<%
' den originale tekst er i TekstOld
pos = instr(lcase(TekstOld),"<br>")
TekstNy = left(TekstOld, pos+4) & "Den Nye Tekst" & right(TekstOld, len(TekstOld)-pos)
' TekstNy er tilrettet og klar
%>

bemærk også, at instr parametre er vendt om (jeg havde glemt det)
Avatar billede EveryMA Mester
24. september 2017 - 02:32 #4
beklager det sene svar
det fungerer perfekt!

hvad implementerer man hvis man skal "søge" om der er f.eks. 20 x <br> og derefter placere en ny tekst efter 15? men kun i tilfælde af at der er flere <br>. lige nu indsætter den perfekt lige efter første linjeskift.

kører man ikke bare videre fra dit førske eksempel:

if pospbr > 14 and posbr < 20 then
indsæt tekst
Avatar billede claes57 Ekspert
24. september 2017 - 10:13 #5
det er lidt mere kringlet, men denne tæller antal <br> op, og husker positionen af den 15' <br>
Hvis den ikke når på på de 20, så indsættes tekst ikke
du kan rette
indsaetved = 15
indsaetkrav = 20
til de steder, du nu vil (positive hele tal)

<%
indsaetved = 15
indsaetkrav = 20
taeller = 0  'tæller antal <br>
gempos = 0  'husker position ved <br>
pos = instr(lcase(TekstOld),"<br>")
while pos > 0
  taeller = taeller + 1
  if taeller = indsaetved then gempos = indsaetved
  pos = instr(pos+4, lcase(TekstOld), "<br>")
wend
if taeller >= indsaetkrav then
  TekstNy = left(TekstOld, gempos+4) & "Den Nye Tekst" & right(TekstOld, len(TekstOld)-gempos)
end if
%>
Avatar billede claes57 Ekspert
24. september 2017 - 10:15 #6
TekstNy = left(TekstOld, gempos+4) & "Den Nye Tekst" & right(TekstOld, len(TekstOld)-gempos)

skal være i en linje...
Avatar billede claes57 Ekspert
24. september 2017 - 10:16 #7
ubs igen, ret
if taeller = indsaetved then gempos = indsaetved
til
if taeller = indsaetved then gempos = pos
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