28. november 2003 - 21:54
Der er
3 kommentarer og
1 løsning
String.Search uden skelnen mlm. upper og lowercase
Hej. Jeg har et problem med en hjemmebygget søgemaskine. Den virker fint, så længe man rammer den præcise stavning. Men det ville være dejligt hvis den ikke skelnede mlm. upper og lowercase. Er der nogen der kan hitte ud af det?
Her er koden:
function search(a){
var string1=document.hello.text1.value;
var all=new Array(num,as,bs,cs,ds,es,fs,gs,hs,is,js,ks,ls,ms,ns,os,ps,qs,rs,ss,ts,us,vs,ws,xs,ys,zs,aa);
var count=0;
var results=1;
var sort=new Array();
var cou=0;
var drei=0;
var rExp = string1;
while(drei<all.length-1){
var count=0;
while(count<all[drei].length-1){
var d=0;
while (d<9){
results = all[drei][count][d].search(rExp);
if (results>-1){sort[cou]=all[drei][count];cou=cou+1;};
d=d+1;
};
count=count+1;
};
drei=drei+1;
};
display(sort);
};
29. november 2003 - 03:59
#1
Jeg kan ikke lige se præcist, hvad det er du ønsker, men kunne du ikke bare konverterer søgestrengen (og data fra start) til små bogstaver før søgning?
Er der ingen træstruktur på dine data siden du bruger tre løkker inde i hinanden?
29. november 2003 - 06:19
#2
Ville det ikke hjælpe en del, hvis du brugte tekst-strenge i stedet for variable ?-)
var alle=new Array(num,'as','bs','cs','ds' ...
-- bemærk, at jeg også ændrede variabel-navnet, det giver ofte uberegnelige resultater at bruge reserverede ord !-)
29. november 2003 - 07:34
#3
OK jeg prøver at forklare. Denne function er en del af min hjemmeside over de film jeg har. as,bs,cs osv. er Array's der indeholder navne på filmene, som igen er arrays der indeholder info om filmene. Denne info bliver displayet direkte fra Array'ene, og skal derfor se præsentabel ud (dvs. ikke lowercase), men det bliver et problem når der skal søges i det. Det alle mine løkker gør, er at bladre hvert enkelt element i allle Array'ene igennem og se om søgestrengen (rExp) er indeholdt i elementet. Hvis det er tilfældet bliver de film gemt i Array'et sort(), som tilsidst bliver vist. Håber jeg forklarer mig ordentligt.