10. april 2002 - 12:05
Der er
11 kommentarer og 1 løsning
RegExp og tal
Jeg skal have lagt to tal sammen som er fundet via et RegExp. Men det virker ikke. Gør jeg noget forkert? ' Nedenstående skal udregne 1469 + 2 myStr = "1469:35/2:11" Set RegX = New RegExp RegX.Global = True RegX.IgnoreCase = True RegX.Pattern = "(\d+):(\d\d)/(\d+):(\d\d)" ' har prøvet følgende Response.Write RegX.Replace(myStr, "$1+$3") Response.Write RegX.Replace(myStr, cint("$1")+cint("$3")) Response.Write RegX.Replace(myStr, clng("$1")+clng("$3")) myStr er selvfølgelig en del af en større tekststreng, men for at gøre det overskueligt har jeg kun brugt "1469:35/2:11" i eksemplet. Kan nogen hjælpe eller blot bekræfte at det ikke kan lade sig gøre?
Annonceindlæg fra Computerworld it-jobbank
10. april 2002 - 12:06
#1
Har i øvrigt også prøvet: Response.Write RegX.Replace(myStr, "$1"+"$3")
10. april 2002 - 12:07
#2
Fordi "$1" er en streng .. og "$3" også er .. du må hive dem ud, lægge sammen og replace.
10. april 2002 - 12:09
#3
Hvordan hvie dem ud?
10. april 2002 - 12:13
#4
Set Matches = Rx.Execute(myStr) Så indeholder Matches() de submatches der måtte være ... Men! .. (d+) .. det betyder ikke digit .. det gør: [\d]+ *måske* .. kan ikke helt huske om MS' RegExp bruger \d .. men ellers er [0-9]+ fin.
10. april 2002 - 12:36
#5
Er ikke helt med endnu. Er det noget ala det her du vil: Set Matches = RegX.Execute(myStr) For Each objMatch in Matches ' ... et eller andet Next
10. april 2002 - 12:43
#6
Matches(1) og Matches(3) vil indeholde dine 2 tal
10. april 2002 - 12:56
#7
Det gør den altså ikke Response.Write Matches(0) ' giver 1469:35/2:11 Matches(1) og Matches(3) findes ikke.
10. april 2002 - 12:57
#8
Skal lige siges at du selvfølgelig har ret med mit pattern. Det skulle have været: RegX.Pattern = "(\d+):(\d\d)/(\d+):(\d\d)"
10. april 2002 - 13:25
#9
Fandt ud af hvordan jeg fik mine to tal frem: For Each objMatch in RegX.Execute(myStr) Response.Write objMatch.SubMatches(0) Response.Write objMatch.SubMatches(2) Next
10. april 2002 - 13:47
#10
Så lykkedes det: For Each objMatch in RegX.Execute(myStr) int1 = cInt(objMatch.SubMatches(0)) int2 = cInt(objMatch.SubMatches(2)) Response.Write Replace(myStr, objMatch.value, int1+int2) Next
10. april 2002 - 13:48
#11
Du ledte mig på sporet af svaret så læg et svar ind så får du point.
02. august 2002 - 14:14
#12
jeg lukker så.
Kurser inden for grundlæggende programmering