/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Trim fra et form felt
Fra : Thomas Møller


Dato : 18-10-02 20:23

Hejsa.

Jeg har lavet en gæstebog, der lagres i en database (access). Jeg
benytter en replace function til at tillade mellemrum og det hele
kører umiddelbart ok.
Mit problem er, at der i øjeblikket tillades at lave mange
mellemrum i databasen.

Kan man lave en trim sådan at der maks tillades et enkelt
mellemrum, samt at der ikke tillades mellemrum efter sidste ord,
der er skrevet ind i formfeltet?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jakob Andersen (18-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 18-10-02 20:29

"Thomas Møller" <thomas@havensupport.dk> wrote
> Kan man lave en trim sådan at der maks tillades et enkelt
> mellemrum, samt at der ikke tillades mellemrum efter sidste ord,
> der er skrevet ind i formfeltet?

Ja, RTrim( dinstreng ) fjerner alle mellemrun til højre for sidste karakter.

--
Jakob Andersen



Thomas Møller (18-10-2002)
Kommentar
Fra : Thomas Møller


Dato : 18-10-02 21:08

Vil det også fjerne alle mellemrum under den tekst man skriver?
Jeg søger en trim, der kan gøre dette så teksten ikke kommer til at se således
ud.


----------------- Kant på indholdsrude ---------------
Her kommer teksten
Her kommer teksten
Her kommer teksten
Her kommer teksten




----------------- Kant på indholdsrude ---------------

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (19-10-2002)
Kommentar
Fra : Jørn Andersen


Dato : 19-10-02 10:05

On Fri, 18 Oct 2002 20:08:26 +0000 (UTC), Thomas Møller
<thomas@havensupport.dk> wrote:

>Vil det også fjerne alle mellemrum under den tekst man skriver?
>Jeg søger en trim, der kan gøre dette så teksten ikke kommer til at se således
>ud.

Nej, det er jo ikke mellemrum, du har til sidst, men linieskift,
så skal du lave noget a la:

Replace(strTekst, vbcrlf & vbcrlf, vbcrlf)

(Det kan godt være den skal tilrettes, afhængigt af om du har
mellemrum efter hvert linieskift, og om du har "mange" liniskift efter
hinanden.

--
Jørn Andersen,
Brønshøj

Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 15:08

Jørn Andersen skrev:

> Nej, det er jo ikke mellemrum, du har til sidst, men linieskift,
> så skal du lave noget a la:
>
> Replace(strTekst, vbcrlf & vbcrlf, vbcrlf)
>
> (Det kan godt være den skal tilrettes, afhængigt af om du har
> mellemrum efter hvert linieskift, og om du har "mange" liniskift efter
> hinanden.

Jeg kan heller ikke helt få det til at virke. Hvis man nu siger der er 20
linieskift efter sidste skrevet linie, og man gerne vil have dem alle sammen
væk. Noget der kan lade sig gøre? Man kunne godt lave det sådan at den
skriver variablen til skærmen, og stopper når den har skrevet det sidste
tegn, som ikke er linieskift eller mellemrum, men det ville være bedre hvis
de overflødige linieskift og mellemrum slet ikke blev gemt i databasen.

Tak
__
Flemming Jensen



Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 15:48

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Jeg kan heller ikke helt få det til at virke. Hvis man nu siger der er 20
> linieskift efter sidste skrevet linie, og man gerne vil have dem alle
sammen
> væk. Noget der kan lade sig gøre?

Jeg har lige strikket en simpel funktion sammen der burde klare det:

Function FjernSidsteLinieskift( strTekst )
While( Mid( strTekst, Len( strTekst) - 1 ) = vbcrlf )
strTekst = Left( strTekst, Len(strTekst) - 2)
Wend
FjernSidsteLinieskift = strTekst
End Function

Jeg har ikke testet ovenstående, så sig lige til hvis det ikke virker efter
hensigten.

--
Jakob Andersen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 15:54

Jakob Andersen skrev:

> Jeg har lige strikket en simpel funktion sammen der burde klare
> det:

[SNIP]

> Jeg har ikke testet ovenstående, så sig lige til hvis det ikke virker
> efter hensigten.

Det virker perfekt. Det var rigtig rart. Tak for det =)

__
Flemming Jensen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 16:08

Lige en sidste ting. Funktionen virker som den skal, men er det ikke muligt
at bygge den lidt ud. Hvis en bruger laver 20 linieskift og til sidst bare
skrive 1, kommer linieskiftene jo alligevel. Det mest optimale ville være,
hvis man kan bygge den ud så at den højest tillader 2 linieskift i røven på
hinanden, men stadig fjerne alle linieskift efter sidste skrevet tegn. Hvis
det er for kompliceret at lave, er det ikke noget I skal bruge tid på, men
har på fornemmelsen, at det er noget I kan lave hurtigt =)

Tak
__
Flemming Jensen



Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 16:27

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Lige en sidste ting. Funktionen virker som den skal, men er det ikke
muligt
> at bygge den lidt ud. Hvis en bruger laver 20 linieskift og til sidst bare
> skrive 1, kommer linieskiftene jo alligevel. Det mest optimale ville være,
> hvis man kan bygge den ud så at den højest tillader 2 linieskift i røven

> hinanden, men stadig fjerne alle linieskift efter sidste skrevet tegn.

Function FjernSidsteLinieskift( strTekst )
While( Mid( strTekst, Len( strTekst) - 1 ) = vbcrlf )
strTekst = Left( strTekst, Len(strTekst) - 2)
Wend
strTekst = Replace( strTekst, vbcrlf & vbcrlf, vbcrlf )
FjernSidsteLinieskift = strTekst
End Function

--
Jakob Andersen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 16:38

Jakob Andersen skrev:

> Function FjernSidsteLinieskift( strTekst )
> While( Mid( strTekst, Len( strTekst) - 1 ) = vbcrlf )
> strTekst = Left( strTekst, Len(strTekst) - 2)
> Wend
> strTekst = Replace( strTekst, vbcrlf & vbcrlf, vbcrlf )
> FjernSidsteLinieskift = strTekst
> End Function

Virker ikke helt. Prøve med at skrive nogle Linie nummere ind:

Linie 1
Linie 3

Linie 6




Linie 15

Den fjerne godt nok nogle, men den mellem linie 1 og 3 skal jo ikke fjernes,
da der gerne må være to linieskift, bare ikke mere endnu. Og mellem linie 6
og linie 15 har den godt nok fjernet nogle, men ikke nok.

__
Flemming Jensen



Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 17:00

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Den fjerne godt nok nogle, men den mellem linie 1 og 3 skal jo ikke
fjernes,
> da der gerne må være to linieskift, bare ikke mere endnu. Og mellem linie
6
> og linie 15 har den godt nok fjernet nogle, men ikke nok.

Nu er vi ude hvor jeg seriøst vil begynde at tvivle på om frekvensen af
indlæg hvor folk finder på at lave mange linieskift står mål med den
processorkraft du bruger men her har du en løsning(igen utestet):

Function FjernSidsteLinieskift( strTekst )
Dim arrTemp, i
arrTemp = Split( strTekst, vbcrlf )
strTekst = ""
For i = 1 To Ubound( arrTemp )
If Not(arrTemp(i) = "" AND arrTemp(i - 1) = "") Then
strTekst = strTekst & arrTemp(i - 1) & vbcrlf
End If
Next
FjernSidsteLinieskift = strTekst
End Function

--
Jakob Andersen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 17:03

Jakob Andersen skrev:

> Nu er vi ude hvor jeg seriøst vil begynde at tvivle på om frekvensen af
> indlæg hvor folk finder på at lave mange linieskift står mål med den
> processorkraft du bruger men her har du en løsning(igen utestet):
[SNIP]

Du har nok egentlig ret. Målgruppen til siden er ikke små børn, som vil more
sig over sådan noget. Jeg tror bare jeg satser på, at folk ikke bevidst
prøver på at lave sådanne ting. Men nu, du har lavet funktionen. Er det helt
galt at bruge den?

__
Flemming Jensen



Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 17:12

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Du har nok egentlig ret. Målgruppen til siden er ikke små børn, som vil
more
> sig over sådan noget. Jeg tror bare jeg satser på, at folk ikke bevidst
> prøver på at lave sådanne ting. Men nu, du har lavet funktionen. Er det
helt
> galt at bruge den?

Faktisk fortrød jeg det første jeg skrev da du jo bruger funktionen ved
indsættelser og ikke ved sidevisninger, så derfor er det ikke så
performancekritisk.

Desuden blev funktionen bedre rent performance end jeg troede da jeg skrev
det første, så det

--
Jakob Andersen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 17:38

Jakob Andersen skrev:

> Faktisk fortrød jeg det første jeg skrev da du jo bruger funktionen ved
> indsættelser og ikke ved sidevisninger, så derfor er det ikke så
> performancekritisk.
>
> Desuden blev funktionen bedre rent performance end jeg troede da jeg skrev
> det første, så det

Så bruger jeg den sgu =)

__
Flemming Jensen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 18:22

Jakob Andersen skrev:

> Function FjernSidsteLinieskift( strTekst )
> Dim arrTemp, i
> arrTemp = Split( strTekst, vbcrlf )
> strTekst = ""
> For i = 1 To Ubound( arrTemp )
> If Not(arrTemp(i) = "" AND arrTemp(i - 1) = "") Then
> strTekst = strTekst & arrTemp(i - 1) & vbcrlf
> End If
> Next
> FjernSidsteLinieskift = strTekst
> End Function

Hvis jeg bruger ovenstående funktion først og derefter den du skrev før:

FUNCTION FjernSidsteLinieskift2(strTekst)
WHILE( Mid( strTekst, Len( strTekst) - 1 ) = vbcrlf )
strTekst = Left( strTekst, Len(strTekst) - 2)
WEND
FjernSidsteLinieskift2 = strTekst
END FUNCTION

Så virker det som det skal =) Nok bedre hvis jeg lige skriver dem sammen =)

__
Flemming Jensen



Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 18:27

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Hvis jeg bruger ovenstående funktion først og derefter den du skrev før:

Hvad går der galt hvis du kun bruger den med arrayet?

--
Jakob Andersen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 18:30

Jakob Andersen skrev:

> Hvad går der galt hvis du kun bruger den med arrayet?

Linie 1

Linie 3



Linie 7




Linie12
Venlig hilsen
Flemming Jensen

Bliver til:

Linie 1

Linie 3

Linie 7

Linie12
Venlig hilsen


Der mangler altså sidste linie, hvor den bare laver et linieskift i stedet
for at skrive den sidste linie med tegn.

__
Flemming Jensen



Flemming Jensen (19-10-2002)
Kommentar
Fra : Flemming Jensen


Dato : 19-10-02 18:31

Hvis jeg bruger begge funktioner sammen virker det heller ikke, men som du
selv nævnte før, er det meget muligt jeg slet ikke får brug for det, så jeg
ved ikke om det er kampen værd.



Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 21:37

"Flemming Jensen" <CyberOrc@tiscali.dk> wrote
> Linie 1
>
> Linie 3
>
>
>
> Linie 7
>
>
>
>
> Linie12

Det kan jeg ikke forstå, nu har jeg lige lavet dette eksempel og det virker
fint:

<%
Option Explicit
Dim strTekst
strTekst = "Her kommer teksten" & vbcrlf
strTekst = strTekst & "Her kommer teksten" & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & "Her kommer teksten" & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & "Her kommer teksten" & vbcrlf
strTekst = strTekst & vbcrlf
strTekst = strTekst & vbcrlf


Function FjernSidsteLinieskift( strTekst )
Dim arrTemp, i
arrTemp = Split( strTekst, vbcrlf )
strTekst = ""
For i = 1 To Ubound( arrTemp )
If Not(arrTemp(i) = "" AND arrTemp(i - 1) = "") Then
strTekst = strTekst & arrTemp(i - 1) & vbcrlf
End If
Next
FjernSidsteLinieskift = strTekst
End Function

strTekst = FjernSidsteLinieskift( strTekst )
Response.Write( Replace(strTekst, vbcrlf, "<br>"))
%>

--
Jakob Andersen



Thomas Møller Nexø (20-10-2002)
Kommentar
Fra : Thomas Møller Nexø


Dato : 20-10-02 08:13

Jeg er som sagt ikke så stiv i den forunderlige verden indenfor ASP.

Kan du evt. hjælpe?
Min kode, der indsætter i databasen ser således ud:

<%

FUNCTION fixQuotes( theString )
   fixQuotes = Replace( theString, "'", "''" )
END FUNCTION
   
   Kommentar = Request( "Kommentar" )
   Navn = Request( "Navn" )
   Hold = Request( "Hold" )
   Hilsen = Replace( Kommentar, vbcrlf, "<BR>" & vbcrlf )
   
Set Con = Server.CreateObject( "ADODB.Connection" )
   DBPath = "DBQ=" & server.mappath("includes/gaestebog.mdb")
   Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

IF Request.Servervariables("Content_Length") > 0 THEN
   Sql = "INSERT INTO gaestebog (Dato, Kommentar, Navn, Hold) VALUES('" & Now()
& "','" & fixQuotes( Hilsen ) & "','" & fixQuotes( Navn ) & "','" & fixQuotes(
Hold ) & "')"
   Con.Execute Sql
   
   Response.Redirect("gaestebog.asp")
   
END IF

%>

Hvor præcis skal jeg indsætte den kode du lavede for at det virker?
På forhånd tak.

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jakob Andersen (20-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 20-10-02 09:56

"Thomas Møller Nexø" <thomas@havensupport.dk> wrote
> Jeg er som sagt ikke så stiv i den forunderlige verden indenfor ASP.

<%

Function FjernSidsteLinieskift( strTekst )
Dim arrTemp, i
arrTemp = Split( strTekst, vbcrlf )
strTekst = ""
For i = 1 To Ubound( arrTemp )
If Not(arrTemp(i) = "" AND arrTemp(i - 1) = "") Then
strTekst = strTekst & arrTemp(i - 1) & vbcrlf
End If
Next
FjernSidsteLinieskift = strTekst
End Function

FUNCTION fixQuotes( theString )
fixQuotes = Replace( theString, "'", "''" )
END FUNCTION

Kommentar = Request( "Kommentar" )
Navn = Request( "Navn" )
Hold = Request( "Hold" )
Hilsen = Replace( FjernSidsteLinieskift(Kommentar), vbcrlf, "<BR>" &
vbcrlf )

Set Con = Server.CreateObject( "ADODB.Connection" )
DBPath = "DBQ=" & server.mappath("includes/gaestebog.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " & DBPath

IF Request.Servervariables("Content_Length") > 0 THEN
Sql = "INSERT INTO gaestebog (Dato, Kommentar, Navn, Hold) VALUES('" & Now()
& "','" & fixQuotes( Hilsen ) & "','" & fixQuotes( Navn ) & "','" &
fixQuotes(
Hold ) & "')"
Con.Execute Sql

Response.Redirect("gaestebog.asp")

END IF
%>

--
Jakob Andersen




Thomas Møller Nexø (19-10-2002)
Kommentar
Fra : Thomas Møller Nexø


Dato : 19-10-02 09:38

Hejsa.

Det skal lige siges, at det er et "notat" felt, bare lige for at rydde evt.
misforståelser af vejen.

Kan du evt. lave et lille eksempel? Jeg må sige at jeg er en smule grøn i ASP


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (19-10-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-10-02 15:37

Jørn Andersen skrev:

> Nej, det er jo ikke mellemrum, du har til sidst, men
> linieskift, så skal du lave noget a la:
>
> Replace(strTekst, vbcrlf & vbcrlf, vbcrlf)

Den er simpel, men ikke uproblematisk. For at fjerne en række
linjeskift efter hinanden skal den køres flere gange (ideelt indtil
den ikke ændrer noget længere).

> (Det kan godt være den skal tilrettes, afhængigt af om du har
> mellemrum efter hvert linieskift, og om du har "mange"
> liniskift efter hinanden.

Man kunne i stedet matche på et passende regex. Jeg er desværre
ikke stiv nok i syntaksen til at jeg lige kan slynge et ud, men det
er muligt at lave et der matcher et vilkårligt antal whitespace-
tegn (inkl. linjeskift) i slutningen af inputteksten.

Nå - jeg tog lige et kig i VBScript-dokumentationen - her er et bud
på et passende regex: "\s*$". Man kan benytte RegExp-objektets
replace-metode til at fjerne de uønskede slutlinjer.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Jakob Andersen (19-10-2002)
Kommentar
Fra : Jakob Andersen


Dato : 19-10-02 15:50

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote
> Nå - jeg tog lige et kig i VBScript-dokumentationen - her er et bud
> på et passende regex: "\s*$". Man kan benytte RegExp-objektets
> replace-metode til at fjerne de uønskede slutlinjer.

Problemet er blot at man i eksemplet bliver nødt til at slå MultiLine
egenskaben til på RegEx objektet og når den er slået til så fortolkes $ ikke
som slutningen af hele strengen men derimod slutningen af hver linie.

--
Jakob Andersen



Jens Gyldenkærne Cla~ (19-10-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 19-10-02 16:16

Jakob Andersen skrev:

> Problemet er blot at man i eksemplet bliver nødt til at slå
> MultiLine egenskaben til på RegEx objektet og når den er slået
> til så fortolkes $ ikke som slutningen af hele strengen men
> derimod slutningen af hver linie.

Det er nok rigtigt. Man kan i stedet søge på tomme linjer (det er
givet som eksempel i dokumentationen), og fx erstatte to eller
flere tomme linjer med en enkelt.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste