webForumDet fria alternativet

Söka ut artikelnummer ur sträng regexp #2

ASP

20 svar · 355 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!

Har nu följande kod som söker ut artikelnumret ur en sträng:

strArticleName = request.Querystring("articleName")
strArticleNr = request.Querystring("articleNr")

dim re
set re = new regexp
re.pattern = "\d{8,}" 

dim m
set m = re.execute(strArticleName)

if m.count then
	Response.redirect "viewMtrl.asp?cmd=noEnumber"
else
   	re.pattern = "\d{7}"
   	set m = nothing

   	set m = re.execute(strArticleName)

   	if m.count then
      	strEnumber = m(0)
	Else  
		Response.redirect "viewMtrl.asp?cmd=noEnumber"
    end if
end if

set re = nothing

Hur gör jag för att modifiera den så att den först söker av strArticleName, finns det inget där söker den av strArticleNr...

Har försökta att brottas med if-satser men det blir bara pannkaka...

Hmm, kommer på fler funktioner efterhand....
Mvh Henrik

Medlem sedan dec. 19996 721 inlägg
#2

Om du sätter ihop strArticleName och strArticleNr, med ett mellanslag emellan, och kör den gamla funktionen på detta, så kommer du att hitta den första förekomsten, eller ingen alls.

Medlem sedan dec. 20025 483 inlägg
#3

Jag har gjort om proceduren en del:

dim re
set re = new regexp
re.pattern = "(\d{7})(\d*)?" 

set m = re.execute(strArticleName)

if m.count then
  if len(m(0).submatches(1)) > 0 then
    response.write "More than 7 consecutive numbers entered"
  else
    response.write m(0).submatches(0)
  end if
else
  response.write "Less than 7 consecutive numbers entered"
end if

set re = nothing
Medlem sedan jan. 20013 582 inlägg
#4

Tja!

hmm, jag trodde jag började förstå deta här...

Den var ju jättefin Peter S, men hur fungerar det?

Och ska jag använda mig av emissions svar också?

Börjar bli lite förvirrad...

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#5
strArticleName = request.Querystring("articleName")
strArticleNr = request.Querystring("articleNr")

function searchArticle(art)
  dim re
  set re = new regexp
  re.pattern = "(\d{7})(\d*)?" 

  set m = re.execute(art)

  if m.count then
    if len(m(0).submatches(1)) < 1 then
      searchArticle = m(0).submatches(0)
      exit function
    end if
  end if

  searchArticle = ""
end function

dim s
s = searchArticle(strArticleName)

if len(s) = 0 then
  ' Testa strArticleNr
  s = searchArticle(strArticleNr)

  if len(s) > 0 then
    ' Numret existerar för strArticleNr
  else
    ' Numret existerar ej
  end if
else
  ' Numret existerar för strArticleName
end if

Testa att lägga in den kod som skall vara där jag lagt kommentarer, så får vi se vad som händer. :)

Medlem sedan jan. 20013 582 inlägg
#6

hmm, men var är variablen som innehåller numret?

Innan så använde jag ju mig av:

if m.count then
      	strEnumber = m(0)

Mvh
Henrik

Medlem sedan dec. 20025 483 inlägg
#7

Den gestaltar sig i form av s.

Medlem sedan jan. 20013 582 inlägg
#8

aha! :r

Ska testa med en gång!

Mvh
Henrik

Medlem sedan jan. 20013 582 inlägg
#9

Jag är ledsen och trög.. men jag får inte ihop det...
Var ska raderna in...

Response.redirect "viewMtrl.asp?cmd=noEnumber"

och hur blir "s" strEnumber....

Sorry...

Henrik

Medlem sedan dec. 20025 483 inlägg
#10
strArticleName = request.Querystring("articleName")
strArticleNr = request.Querystring("articleNr")

function searchArticle(art)
  dim re
  set re = new regexp
  re.pattern = "(\d{7})(\d*)?" 

  set m = re.execute(art)

  if m.count then
    if len(m(0).submatches(1)) < 1 then
      searchArticle = m(0).submatches(0)
      exit function
    end if
  end if

  searchArticle = ""
end function

dim s
s = searchArticle(strArticleName)

if len(s) = 0 then
  ' Testa strArticleNr
  s = searchArticle(strArticleNr)

  if len(s) > 0 then
    [b]strEnumber = s[/b]
  else
    [b]Response.redirect "viewMtrl.asp?cmd=noEnumber"[/b]
  end if
else
  [b]strEnumber = s[/b]
end if

:)

Medlem sedan jan. 20013 582 inlägg
#11

:)
Okej.. det funkar på strArticlename, men inte på strArticleNr...

om det nu inte är jag som klippoklistrat fel....

Henrik

Medlem sedan jan. 20013 582 inlägg
#12

hmm... SBS, som vanligt...

Jag hade använt skrivit fel i querystringen, så strArticleNr blev tom...

Det funkar nu!

Men nu bygger det väl på att E-numret som skrivs i strArticleNr är på 7 siffror och inte innehåller några andra tecken. Några kontroller görs väl inte med det.. eller...

//Henrik

Medlem sedan dec. 20025 483 inlägg
#13

Om strArticleName innehåller exakt sju på varandra efterföljande siffror, sparas denna sekvens i strEnumber.

Om ovanstående inte är sant, kollas strArticleNr för samma sekvens. Hittas den, tilldelas strEnumber det värdet.

Om båda ovanstående är falska dirigeras man till viewMtrl.asp.

Så fungerar det i alla fall för mig. :)

Medlem sedan jan. 20013 582 inlägg
#14

Oj, jo vid lite närmare koll så verkar det som det är så!!

Fan vad fint det blev....

Funkar kanon....

:)

//Henrik

Medlem sedan dec. 20025 483 inlägg
#15

strArticleNr kan innehålla andra tecken än siffror. :)

Red./ Jag är för seg av mig ;)

Medlem sedan jan. 20013 582 inlägg
#16

jo, jag testade lite mer och visst är det så... nu kan de där klåparna till elektriker skriva nästan hur som helst men jag kan ändå tyda vad det är för artiklar som dom menar...

Men jag hade ju en diskussion om att det finns en del artiklar (som ej är E-nummer som innehåller 8 tecken... det tas det väl inte hänsyn till va?

//Henrik

//Henrik

Medlem sedan jan. 20013 582 inlägg
#17

strArticleNr kan innehålla andra tecken än siffror.

vad menar du?

//Henrik

Medlem sedan dec. 20025 483 inlägg
#18

Det tas inte hänsyn till. Jag utgick från den kod du visade i det första inlägget. :)

Medlem sedan dec. 20025 483 inlägg
#19

devotion skrev:

vad menar du?

//Henrik

Jag svarade på:

devotion skrev:

Men nu bygger det väl på att E-numret som skrivs i strArticleNr är på 7 siffror och inte innehåller några andra tecken

Medlem sedan jan. 20013 582 inlägg
#20

ahh, okej det var ett sidospår tidigare idag...

(Y)

//Henrik

253 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)