26. juli 2001 - 09:23Der er
37 kommentarer og 2 løsninger
Opdeling af String
Hejsa
Jeg har brug for opdele string X der indeholder: 1+4;2+5;4+7;3+11;5+6;6+10;4+13;1+21;2+40; Tallet før + går fra 1-6 og tallet efter + skal sættes ind i 6 forskellige arrays afhængig af tallet 1-6.
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Du kan benytte dig af funktionene instr(), til at finde det næste \'+\', den returnere positionen, som du så kan benytte ved at bruge mid() til at kopiere den karakter ud du skal bruge....
While InStr(tmpX,\";\") endIndex=InStr(tmpX,\";\") array=Mid(tmpX,1,1) // tallet før + value=Mid(tmpX,3,endIndex-1) // tallet efter + length=len(tmpX) tmpX=Mid(tmpX,endIndex+1,length-endIndex+1)
// læg værdierne ind i de rigtige arrays select case array case 1 array1(<plads>)=value case 2 ... case else Response.write(\"ERROR! Array ikke defineret!\") end select wend
// jeg har ikke afprøvet ovenstående, men prøv at se hvad det giver :o)
arr1 = split(Text,\";\") for i = 0 to ubound(arr1) -1 arr2 = split(arr1(i),\"+\") \'nu ligger det første bogstav i arr2(0) og det andet i arr2(1) next i
En for each løkke er langsommere da den et for et løber din collection/array igennem og adderer en tæller med en. LBound og Ubound bruger en anden algoritme som altid antager at det element det starter med er henholdsvis det største eller laveste og derfor behøves der sjældent al løbes igennem hele dit arrayet/collection
Det forklarede ikke hvorfor at for each er langsommere. i next tælles der jo også en tæller op. Til gengæld kan det nok godt betale sig at flytte ubound ud af FOR løkken, da den ellers checker størrelsen af arrayet hele tiden.
Nej, nej. Foreach løkken ved ikke hvor mange steps den skal igennem det skal den først tælle, det skal den først tælle. Det skal for x to x løkken ikke
WHAT??? Jo den skal! Ubound finder jo størrelsen af arrayet(og i dette tilfælde hvor mange steps den skal igennem). Jeg er ked af det, men dine forklaringer holder ikke i retten. Uden at vide hvordan microsoft har implementeret for each, kan du ikke konkludere at for each er langsommere end ubound. Hvis du har et link til microsoft specifikation af implementeringen, må du meget gerne poste det.
Min umiddelbare holdning til dette er at for each meget vel kan være hurtigere end ubound, fordi at mere funktionalitet er gemt i en linie kode asp, og microsoft derfor har haft mulighed for at optimere det i baggrunden.
oswald>> Undskyld men jeg syntes netop dette er en dejlig diskussion da det ikke er den sædvanlige: \"Hvad går der galt her\". Jeg har intet imod at vi drejer os over på performance og teori.
Men vi kan vel godt blive enige om at man IKKE bruger en for each hvis man kender sine afgrænsninger på forhånd, f.eks. vhvor mange elementer der er i arrayet.
Grunden jeg tror at for each er hurtigere er at tilgang til lokale variable er hurtigere end hurtigere en at læse og skrive i arrays. Derfor tror jeg at uanset om man kender størrelsen på arrayet, vil det det være hurtigst at bruge for each (hvis man vel at mærke skal igennem alle poster i arrayet). Hvis man derimod kun skal tilgå et subset af sit array, kan det med stor sikkerhed betale sig at at bruge for x to y. Det der tager længst tid i din kode må være at skrive teksten ud. Hvis du bare kopierer teksten over i en variabel, tror jeg du vil få et andet resultat.
Undskyld det har taget så lang tid, jeg har lige flyttet :)
Jeg har brugt lidt fra zeptic og lidt mere fra oswald, derfor denne point fordeling... Tak for hjælpen og sikke en diskusion!
Synes godt om
Ny brugerNybegynder
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.