|
| 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
på
> 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.
| |
|
|