webForumDet fria alternativet

Splitta en stor textsträng?

ASP

7 svar · 362 visningar · startad av nakoz

Medlem sedan dec. 1999653 inlägg
Frågan#1

Jag har en textsträng på typ 5000 tecken som jag tänkte splitta upp i lite mindre strängar och mata in i en databas.

Det är HTML-kod som jag gjort i ett tidigare projekt, men nu ska vi modernisera lite.

Jag ska hämta värden i en value-tagg, ser ut såhär;
value="hejhej - 1231"
hejhej kan vara "hejsan hej" också, men 1231 är alltid 4 siffror.

Jag har alltså typ 150st value-taggar som jag ska hämta värdena ifrån och slänga in i två olika fält i en databas.

Alltså, borde vara nån FOR EACH ITEM-variant efter splitten?

Hur göra?

Mvh,

Medlem sedan dec. 1999653 inlägg
#2

Just de, kan addera det, att de är BARA i value strängen som "-" finns med. så det kan ju vara ett litet riktmål?! =)

Medlem sedan dec. 19996 721 inlägg
#3

Använd RegExp i stället

En lämplig pattern borde kunna se ut så här:

rxp.Pattern="value=\""([^\""]+?) - (\d{4})\"""
Medlem sedan dec. 1999653 inlägg
#4

Tack emission, nu har jag löst det med ditt regexp..
Lite pill å så, men en välinvesterad timme..

Set objRE = New RegExp
objRE.Global = True
objRE.IgnoreCase = True
	
objRE.Pattern="value=\""([^\""]+?) - (\d{4})\"""
Set myMatches = objRE.Execute(strText)

For each item in myMatches
	rattStr = Right(item.Value,item.Length-7)
	rattStr = Left(rattStr,Len(rattStr)-1)

	myarray = Split(rattStr, " - ")
	prod = Trim(myarray(0))
	art = Trim(cInt(myarray(1)))

	SQL = "INSERT INTO [produkter] ([pNamn], [pArtnr]) VALUES ('" & prod & "', " & art & ")"
	cn.Execute SQL
Next

Kanske inte var riktigt så jag skulle nyttja det, men jag tänkte att jag skulle försöka lösa det på egen hand, dessutom så var det här en funktion som jag bara skulle köra en gång, därav har jag inget intresse i att optimera den (men feedback på lösningen tar jag självklart åt mig då jag gör liknande grejer i framtiden).

Medlem sedan dec. 19996 721 inlägg
#5

Helt OK!

Feedback:

Med hjälp av parentesavgränsningarna i regexpen så kan man plocka ut "prod" och "art" väldigt enkelt.

For each item in myMatches
	
	prod = item.submatches(0)
	art = item.submatches(1)

	SQL = "INSERT INTO [produkter] ([pNamn], [pArtnr]) VALUES ('" & prod & "', " & art & ")"
	cn.Execute SQL
Next
Medlem sedan dec. 1999653 inlägg
#6

klockrent emission, så skulle jag gjort.
var alldeles för länge sen jag höll på med regular expressions (och arrayer också för den delen), så därav hajade jag inte att paranteserna gav mig rätt värden.

Du gav mig koden på silverfat, å ändå skulle jag till å börja böka med den ;)

Medlem sedan dec. 1999653 inlägg
#7

en fråga bara...
kan du vad alla små fnuttar och bokstäver i pattern-uttrycket gör i huvudet eller kollar du referens över dem? *hoppas på det sistnämnda* =)

Medlem sedan dec. 19996 721 inlägg
#8

Ledsen, men de sitter i huvudet.... :)

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