27. august 2017 - 16:15Der 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.
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 %>
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)
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:
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 %>
ubs igen, ret if taeller = indsaetved then gempos = indsaetved til if taeller = indsaetved then gempos = pos
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.