Avatar billede wolfgang Praktikant
04. april 2005 - 21:00 Der er 23 kommentarer og
1 løsning

Erstat flere end 2 linjeskift (VBCRLF)

Hej med jer,

I forbindelse med et DB udtræk, der er indtastet i et formularfelt, har jeg brug for at kunne "censorer" brugerens input af flere linjeskift.

Pt. har jeg en replace på "VBCRLF" med <br>, således at jeg kan få normale linjeskift.

Men... Hvis brugeren under sin indtastning, har været for kreativ, og lavet f.eks. mere end 2 linjeskift i sin indtastning. Skal det erstattes med ingenting.

Hvordan kan dette gøre.

på forhånd tak.

MVH
Wolfgang
Avatar billede moejensen Nybegynder
04. april 2005 - 21:08 #1
kan du ikke efter du har lavet den første replace, lave førlgende

Replace(strText, "<br><br>","<br>")
Avatar billede wolfgang Praktikant
04. april 2005 - 23:05 #2
Hej MoeJensen, Det syntes ikke rigtig at virke.
Hvis det gøres på den måde, skal man umiddelbart vide hvor mange "<br>" der er blev genereret i Replace funktionen.

Nogen andre forslag til en løsning?
Avatar billede cool_casper Nybegynder
05. april 2005 - 10:33 #3
Jeg tror umiddelbart ikke du har brug for at tælle hvor mange "<br>" du har genereret. Du siger du vil have 2 linieskift erstattet med ingenting. Dette burde kunne gøres sådan her: strText = Replace(strText, "<br><br>","")

Du kunne også prøve at køre denne funktion FØR du replacer dine VbCrLf med "<br>":
strText = Replace(strText, VbCrLf & VbCrLf,"")
Avatar billede moejensen Nybegynder
05. april 2005 - 10:37 #4
eller hvad med bare at gøre således:

strText = Replace(strText, VbCrLf & VbCrLf,"<br>")
Avatar billede wolfgang Praktikant
05. april 2005 - 10:39 #5
Pænt goddag til jer begge.

Hvad hvis der er f.eks. er 3 linjeskift. Så vil ingen af Replace funktioner have effekt - eller?

MVH
Wolfgang
Avatar billede moejensen Nybegynder
05. april 2005 - 10:42 #6
jo så vil de to blive til 1, så der er to ialt efterfølgende.
Avatar billede wolfgang Praktikant
05. april 2005 - 10:44 #7
OK, det lyder lovende.
Hvordan skal denne rutine kombineres med den eksisterende.
<%= Replace(rsReviewSQL2("Phase2"),VBCRLF,"<br>")%>

MVH
Henrik
Avatar billede moejensen Nybegynder
05. april 2005 - 11:02 #8
slet denne: <%= Replace(rsReviewSQL2("Phase2"),VBCRLF,"<br>")%>
og skriv <%= Replace(rsReviewSQL2("Phase2"),VbCrLf & VbCrLf,"<br>")%>
Avatar billede wolfgang Praktikant
05. april 2005 - 11:09 #9
Hej igen,
Hvis jeg benytter din rutine, mister jeg replace funktionen ved et enkelt linjeskift :(
Avatar billede moejensen Nybegynder
05. april 2005 - 11:14 #10
nåå ja, så skriver du følgende efter

<%= Replace(rsReviewSQL2("Phase2"),VBCRLF,"<br>")%>
Avatar billede wolfgang Praktikant
05. april 2005 - 11:27 #11
Hej MoeJensen,
Det løser ikke mit problem 100% som ønsket.

Hvis der er flere end 2 vil Replace rutinen heller ikke blive afviklet korrekt.
- Tror desværre ikke denne metode løser mit problem.

Tusind tak for hjælpen

Er der andre forslag til løsning af ovenstående?

MVH
Henrik
Avatar billede cool_casper Nybegynder
05. april 2005 - 12:15 #12
Prøv dette:
<%
strPhase2 = rsReviewSQL2("Phase2")
strPhase2 = Replace(strPhase2 ,VBCRLF,"<br>")
strPhase2 = Replace(strPhase2 ,"<br><br>","")
Response.Write strPhase2
%>

Her smider vi din værdi ind i en variabel (strPhase2) derefter kører vi din normale rutine med at replace VbCrlF med "<br>". Til sidst den udvidede rutine som replacer "<br><br>" med ingenting.

Hvordan ser det ud?
Avatar billede l0w Nybegynder
05. april 2005 - 12:16 #13
Prøv eventuelt med RegExp:

Function RegExpTest(patrn, strng, repstr)

  Dim regEx, Match, Matches
  Set regEx = New RegExp
  regEx.Pattern = patrn
  regEx.IgnoreCase = True
  regEx.Global = True
 
  RegExpTest = regEx.Replace(strng, repstr)
 
End Function

Response.Write RegExpTest("[\r\n]+[\r\n]*", "Hejsa" & vbcrlf & vbcrlf & "Dette er en test" & vbcrlf & "der skifter VBCRLF ud med BR" & vbcrlf & vbcrlf & vbcrlf & "Slut", "<br>")
Avatar billede l0w Nybegynder
05. april 2005 - 12:19 #14
Skulle også være nok med [\r\n]+ i pattern. :)
Avatar billede wolfgang Praktikant
05. april 2005 - 12:57 #15
Hej Cool Casper,
Tusind tak, det ser ud til at virke som ønsket.

->I0w, jeg kan desværre ikke gennemskue dit forslag.
Avatar billede l0w Nybegynder
05. april 2005 - 13:03 #16
Det skulle være til at teste hvis det er, bare prop det ind i en ASP fil, så skulle den vise resultatet. :)
Avatar billede wolfgang Praktikant
05. april 2005 - 13:10 #17
Hmm..
Hvordan passer det ind i mit nuværende udtræk:
<%= Replace(rsReviewSQL2("Phase2"),VBCRLF,"<br>")%>
Avatar billede l0w Nybegynder
05. april 2005 - 13:23 #18
Function RegExpTest(patrn, strng, repstr)

  Dim regEx, Match, Matches
  Set regEx = New RegExp
  regEx.Pattern = patrn
  regEx.IgnoreCase = True
  regEx.Global = True
 
  RegExpTest = regEx.Replace(strng, repstr)
 
End Function

<%= RegExpTest("[\r\n]+", rsReviewSQL2("Phase2"), "<br>") %>
Avatar billede l0w Nybegynder
05. april 2005 - 13:24 #19
Prøver lige igen.
<%
Function RegExpTest(patrn, strng, repstr)

  Dim regEx, Match, Matches
  Set regEx = New RegExp
  regEx.Pattern = patrn
  regEx.IgnoreCase = True
  regEx.Global = True
 
  RegExpTest = regEx.Replace(strng, repstr)
 
End Function

Response.write RegExpTest("[\r\n]+", rsReviewSQL2("Phase2"), "<br>")
%>
Avatar billede wolfgang Praktikant
05. april 2005 - 13:30 #20
Hej igen,

Jeg får denne fejl.
Microsoft VBScript compilation error '800a03ea'
Syntax error
Function
^
Avatar billede l0w Nybegynder
05. april 2005 - 13:33 #21
Ok Function i function går ikke, prøv i stedet dette:

<%
Dim regEx
Set regEx = New RegExp
regEx.Pattern = "[\r\n]+"
regEx.IgnoreCase = True
regEx.Global = True

Response.Write regEx.Replace(rsReviewSQL2("Phase2"), "<br>")
%>
Avatar billede wolfgang Praktikant
05. april 2005 - 13:37 #22
Så spiller det.
Hvordan søren får jeg givet dig points for det?

MVH
Henrik
Avatar billede l0w Nybegynder
05. april 2005 - 13:38 #23
Jeg vil meget hellere have karma :D
Avatar billede wolfgang Praktikant
05. april 2005 - 13:43 #24
Hvad du ønsker, skal du få :D
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