Avatar billede LeifBergJensen Nybegynder
01. marts 2010 - 01:02 Der er 4 kommentarer og
1 løsning

Fjerne vilkårlig slutning fra string

Hej, VBscript eksperter.

Jeg har nørklet med dette problem i flere timer, så nu må jeg bede om jere hjælp.
Jeg skal lave en asp/vbscript editor til .txt filer som skal bruges i flash.

Jeg henter indholdet fra en .txt fil.
Det ser nogenlunde sådan her ud:
____________________________________

&var1=Her kan stå en hel masse tekst
med flere linieskift.

Noget mere tekst.
&var2=Firmanavn af varierende længder
____________________________________

Fra txt filen fjerner jeg &var1= uden problemer, men skal så bevare resten af teksten frem til &var2=Et eller andet firmanavn.
D.v.s. jeg også skal fjerne det sidste linieskift samt &var2=og alt herefter. Giver det mening?

Jeg har prøvet med følgende:
updateText = left(updateText,((Len(updateText))-(InStrRev(updateText,"&var2=Et Firmanavn"))))
Det giver underlige resultater jeg ikke kan finde hoved eller hale i.
Er det linieskiftene i teksten der giver mig problemer?
Hvordan kan jeg evt gøre det anderledes/bedre?

Venlig hilsen,
Leif Berg Jensen
Avatar billede janus_007 Nybegynder
01. marts 2010 - 02:07 #1
Det ville jeg bruge regular expressions til:

For at pille teksten ud imellem &var1 og &var2, kan du bruge flg.:
&var1=(.*?)&var2

Den giver dig ud fra dit eksempel:
Her kan stå en hel masse tekst
med flere linieskift.

Noget mere tekst.


Stringmanipulation som du laver med strrev, left osv. er yderst resourcekrævende, ved at bruge regex får du også en langt bedre performance :)
Avatar billede LeifBergJensen Nybegynder
01. marts 2010 - 08:04 #2
Tak for det hurtige svar, janus_007.

Jeg er dog ikke super-erfaren med asp/vbscript, og endnu mindre med regex.

Performance er ikke et issue med dette, da det kun er mig selv der kommer til at køre scriptet, men god pointe anyway :)

Kan du evt. vise et kode-eksempel på hvordan jeg kan gøre det?
Hvordan stiller jeg det op, og hvordan putter jeg resultatet ind i en ny variabel?
Jeg glemte iøvrigt at skrive, at jeg faktisk også skal bruge det der kommer efter &var2= - det skal dog i en var for sig selv.
Jeg skal bruge indholdet af strengen til at udfylde et par felter i en form.
Avatar billede janus_007 Nybegynder
01. marts 2010 - 18:56 #3
ehh jo mjaaa.. nu er det jo meget lang tid siden jeg har kodet vbscript, men mon ikke noget alá (jeg fandt lidt her: http://www.4guysfromrolla.com/webtech/090199-1.shtml


Dim objRegExpr 'Create an instance of the regexp object Set objRegExpr = New regexp

objRegExpr.Pattern = "&var1=(.*?)&var2=(.*?)"
objRegExpr.Global = True
objRegExpr.IgnoreCase = True
objRegExpr.MultiLine = True


Dim strSearchOn
strSearchOn = "My phone number is (123)654-3211. Sue's phone " & _ "number is (873)392-1222." 'Declare a variable to hold our collection of Matches
Dim colMatches
'Now, Execute the regular expression search
Set colMatches = objRegExpr.Execute(strSearchOn)

Dim objMatch 'Print the # of matches we found Response.Write colMatches.Count & " matches found...<P>" 'Step through our matches
For Each objMatch in colMatches
Response.Write objMatch.Value & "<BR>"
Next 'Clean up
Set colMatches = Nothing
Set objRegExpr = Nothing 

Det burde kunne gøre det mere eller mindre :)
Hvis du har behov for at teste regular expressions, så findes der mange værktøjer til det, men det bedste online jeg har fundet er : http://www.gskinner.com/RegExr/
Avatar billede LeifBergJensen Nybegynder
01. marts 2010 - 23:38 #4
Det blev nu alligevel til en vbscript løsning med noget split/mid halløj - det fungerer fint, og som jeg skrev er performance ikke et issue.

Du skal alligevel ha' tak. Linket til den regex tester er kanon!

Skriv et svar, så får du point :)
Avatar billede janus_007 Nybegynder
01. marts 2010 - 23:55 #5
:) godt du fik klaret det
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