webForumDet fria alternativet

Regexp

4 svar · 710 visningar · startad av devotion

devotionMedlem sedan jan. 20013 582 inlägg
#1

Hej!

Jag har följande funktion som söker ut postnummer och ort från en sammansatt sträng:

Function SplitAddress(sMergedAddress)

	dim re, matches, match
	dim sInput, sPostalNr, sCity
	dim a(1)

	sInput = trim(sMergedAddress)
	sPostalnr = ""
	sCity = ""
	
	set re = new regexp
	re.ignorecase = true
	re.pattern = "^(\d+\s*\d+)\s*([a-zåäö]+)$"
	
	if not re.test(sInput) then
		sCity = sInput
	else
		set matches = re.execute(sInput)
		set match = matches(0)
		sPostalnr = match.submatches(0)
		sCity = match.submatches(1)
	end if

	a(0) = sPostalNr
	a(1) = sCity

	SplitAddress = a(0) & chr(9) & a(1)

End Function

Men, följande orter fungerar inte (troligtvis för att ortnamnet består av två ord eller att det finns ett mekllansteg i namnet:

421 32 V-FRÖLUNDA
426 77 VÄSTRA FRÖLUNDA
422 43 HISINGS BACKA

Hur fixar man till det?

Mvh
Henrik

voigtann1Medlem sedan juni 20019 519 inlägg
#2

lägg till \s i dina ort namn:

^(\d+\s*\d+)\s*([a-zåäö\s]+)$
devotionMedlem sedan jan. 20013 582 inlägg
#3

voigtann1 skrev:

lägg till \s i dina ort namn:

^(\d+\s*\d+)\s*([a-zåäö\s]+)$

:)

Det fungerade på de ortnamn som har två ord, men inte på denna:

422 04 Hisings-Backa

Dvs ett bindestreck i namnet

(Nu är det väl iofs inte rättstavat, men det förekommer ju)

Kan man hantera bindestreck i ortnamnet?

Mvh
Henrik

voigtann1Medlem sedan juni 20019 519 inlägg
#4

Med tanke av att du har frågat så många frågor om RegExp så borde du kunna fixa detta själv ;)

^(\d+\s*\d+)\s*([a-zåäö\s\-]+)$
devotionMedlem sedan jan. 20013 582 inlägg
#5

:)

Det fjunkade!

Tackar!

Mvh
Henrik

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)