Avatar billede folle Nybegynder
16. marts 2001 - 22:04 Der er 9 kommentarer og
1 løsning

Fjern mellemrum i string

Jeg har lavet et asp program hvor der hentes en post fra en access-database via sql, som derefter undersøges om den er lig en anden streng. Dette giver \"false\" selvom de to strenge er nøjagtig ens når de udskrives. Den ene streng har en længde på 5 mens den anden har en længde på 10. Min konklusion: Den ene streng har 5 blanke tegn efter teksten. Jeg forsøgte derefter at fjerne disse, først med Trim(\"streng\") og derefter med Replace(\"streng\",\" \",\"\"), men længden forbliver 10. Hvis jeg derimod bruger denne metode Mid(\"streng\",1,5) bliver de to strenge lig hinanden. Denne metode kan jeg dog ikke bruge i mit program da længden på de to strenge svinger. Hvad skal jeg gøre?
Avatar billede tpiil Nybegynder
16. marts 2001 - 22:07 #1
hvad med:
Replace(\"streng\", ,\"\")
Avatar billede folle Nybegynder
16. marts 2001 - 22:29 #2
Nej. Jeg får en fejlmeddelelse:
HTTP 500 - Intern serverfejl
Avatar billede jespernaur Nybegynder
17. marts 2001 - 03:02 #3
Du kan fjerne efterstillede blanke fra vilkårligt lange strenge vha:

  Set regEx = New RegExp
  regEx.Pattern = \" *$\"
  string_without_trailing_blanks = regEx.Replace( string_with_trailing_blanks, \"\" )

Mvh
Jesper Naur

Avatar billede folle Nybegynder
17. marts 2001 - 09:24 #4
Det virker desværre ikke. Længden af den pågældende streng er stadig 10. Måske er det ikke blanke som er efter strengen.

Jeg kører denne her program stump:

brugernavn=adors.fields(\"foer\")
Set regEx = New RegExp
regEx.Pattern = \" *$\"
udenblanke = regEx.Replace(brugernavn, \"\" )

Derefter udskriver jeg variable:

<%=brugernavn%>
<%=udenblanke%>
<%=len(brugernavn)%>
<%=len(udenblanke)%>

og får følgende udskrift:

test1test1 1010

Det ser ikke ud til at der er blanke efter strengen, men alligevel har den længde 10.

Kan der være noget galt med den måde jeg indsætter eller henter strengen i databasen?

Avatar billede jespernaur Nybegynder
17. marts 2001 - 10:47 #5
Så må vi jo skrue bissen på for at finde ud af, hvad det er strengen indeholder.
Prøv

  for i = 1 to Len(str)
      Response.Write( \"asc(\" & Mid(str,i,1) & \") = \" & Asc(Mid(str,i,1)) & \"<br>\" )
  next

Mvh
Jesper Naur
Avatar billede folle Nybegynder
17. marts 2001 - 11:08 #6
Jeg gjorde nøjagtigt som du skrev, denne gang med en streng \"folle\", og fik flg. resultat:

asc(f) = 102
asc(o) = 111
asc(l) = 108
asc(l) = 108
asc(e) = 101
asc(asc(t) = 116
asc(i) = 105
asc(n) = 110
asc(g) = 103

Hvad er den sidste del, og hvordan fjernes det?
Avatar billede jespernaur Nybegynder
17. marts 2001 - 11:38 #7
Det ser ud til, at den \'gode\' del af strengen termineres af et \'ikke-trykbart\' tegn (alt hvad der derefter følger er snavs). Dette
giver desværre anledning til udskriften

asc(asc(t) = 116

hvorved vi går glip af det vigtigste, nemlig ASCII-værdien af terminatortegnet.
Prøv nøjagtig det samme igen, men udskriv denne gang kun ASCII-værdien:

  for i = 1 to Len(str)
      Response.Write( \"ASCII-værdi: \" & Asc(Mid(str,i,1)) & \"<br>\" )
  next

Mvh
Jesper Naur
Avatar billede folle Nybegynder
17. marts 2001 - 11:52 #8
Jeg får flg. udskrift:

ASCII-værdi: 102
ASCII-værdi: 111
ASCII-værdi: 108
ASCII-værdi: 108
ASCII-værdi: 101
ASCII-værdi: 0
ASCII-værdi: 0
ASCII-værdi: 0
ASCII-værdi: 0
ASCII-værdi: 0
Avatar billede jespernaur Nybegynder
17. marts 2001 - 12:31 #9
Hvis vi antager, at du er interesseret i alt hvad der står før den første forekomst
af et ASCII NUL-tegn, kan mit tidligere svar ændres til:


  Set regEx = New RegExp
  regEx.Pattern = \"[\\000].*$\"
  string_until_first_nul = regEx.Replace( complete_string, \"\" )

Mvh
Jesper Naur
Avatar billede folle Nybegynder
17. marts 2001 - 12:51 #10
Super, det virker. Jeg ved stadig ikke hvordan den bagerste del af strengen opstår, men sålænge jeg kan fjerne den er det ok.

Tusind Tak. MVH Folle
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