Avatar billede charly Nybegynder
26. juni 2003 - 22:54 Der er 6 kommentarer og
1 løsning

split af kommasepareret streng

Jeg har en .txt fil, jeg gerne vil udtrække fra.

Den ser således ud:

"000000001","Vare 1",30.1,"STK",01,"443222"
"000000002","Vare 1, med sovs",25.5,"STK",10,"223111"

Hvis jeg anvender:

arrValues = Split(strTemp, ",")

splitter den min "Vare 1, med sovs" i to elementer!

Og det er jo ikke meningen, da logisk hører sammen i kun eet element!

Hvordan kan dette omgås?

/Charly
Avatar billede eagleeye Praktikant
26. juni 2003 - 22:57 #1
Ved at bruge et andet tegt end , at dele/splite på eksvis ;

"000000002";"Vare 1, med sovs";25.5;"STK";10;"223111"
Avatar billede charly Nybegynder
26. juni 2003 - 23:00 #2
Det bliver lidt svært, da der er over 20.000 records i .txt filen! :-)

Jeg går ud fra, at mit udtræk stammer fra et databasesystem.
Avatar billede eagleeye Praktikant
26. juni 2003 - 23:05 #3
Ok, så må man lave noget kode som kan det.
Er det altid et tal som kommer efter navnet "vare 1",TAL ?

Og hvad indeholder filen helt præsis er teksten med " eller uden
"000000001","Vare 1",30.1,"STK",01,"443222"

000000001,Vare 1,30.1,STK,01,443222
Avatar billede charly Nybegynder
26. juni 2003 - 23:13 #4
Ja, der er altid tal, der kommer efter navnet/feltet "vare 1"!

Det er som om, at alle streng felter har en " udenom og
talene står alene.

eks.

"000000001","Vare 1",31.1,"STK",01,"443222"
"000000002","Vare 2",23.1,"STK",01,"443222"
"000000003","Vare 3",34.1,"STK",01,"443222"
"000000004","Vare 4",330.1,"STK",01,"443222"
"000000005","Vare 5, med sovs",33.1,"STK",01,"443222"

Jeg går til ro nu, men håber der er svar i morgen :-)
Avatar billede edutasia Nybegynder
27. juni 2003 - 00:10 #5
Her er en Split-funktion, der udskifter alle kommaer inden for " og " med et møllehjul (¤), før den splitter som normalt ved komma. Dvs. at "Vare 1, med sovs" bliver til "Vare 1¤ med sovs":

Function SplitStr(str)
  Dim re, strTmp
  Set re = New RegExp
  re.Pattern = "(""[\w\d\s]+),([\w\d\s]+"")"
  re.Global = true
  strTmp = re.Replace(str, "$1¤$2")
  SplitStr = Split(strTmp,",")
End Function


Den bruges sådan her:

' her er en streng til at teste med
testStr = """000000001"",""Vare 1"",30.1,""STK"",01,""443222"",""000000002"",""Vare 1, med sovs"",25.5,""STK"",10,""223111"""

'den splittes med den nye funktion
arrTmp = SplitStr(testStr)

' hvert element i arrayet udskrives - men først udskiftes møllehjul igen med komma
For Each Item In arrTmp
  Response.Write Replace(Item,"¤",",") & "<br>"
Next
Avatar billede charly Nybegynder
27. juni 2003 - 09:58 #6
Det er stort!

Tak for hjælpen.
Avatar billede edutasia Nybegynder
27. juni 2003 - 10:08 #7
Selv tak :)
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