Array durchsuchen VB.Net



  • tagchen.
    habe folgendes Problem.

    habe ein Array mit Werten (Strings) bspw. "0415"
    nun möchte ich dieses Array durchsuchen. Allerdings, wenn der Nutzer "04" eingibt, sollen alle Werte des Array die mit 04 beginnen angezeigt werden.

    Irgendwie komme ich da auf keinen grünen Zweig.
    Ich hoffe ihr könnt mir helfen und Danke schonmal!
    THX a lot
    bart(holomeus)



  • Och da gibt's doch viele Möglichkeiten.

    String[] list = { "954", "0593", "05678", "9945" };
    
                var qry = from l in list
                          where l.StartsWith("05")
                          orderby l
                          select l;
    
                foreach (var entry in qry) Console.WriteLine(entry);
    


  • Danke erstmal für die antwort.
    aber das funzt nich.
    ich glaub das geht im visual studio 2008 aber ich benutze hier das 2005er. und da wird das noch nicht unterstützt.
    gibt es denn sonst noch eine möglichkeit???



  • Wenn das Array nicht zu groß ist kannst du es sortieren und dann mit BinarySearch auf das erste "upperbound" setzen. Ansonsten solltest du einen moderneren Container in Betracht ziehen.

    //Suchstring
                String searchItem = "07";
    
                String[] list = { "754", "053", "05678", "7945" };
                //Array muß sortiert sein
                Array.Sort(list);
    
                //erstes Element >= gefundenes Element
                int start = Array.BinarySearch(list, searchItem);
    
                //exakt ein Treffer
                if (start >= 0) {
    
                    Console.WriteLine(list[start]);
                    return;
                }
    
                //erstes Element größer Suchstring
                start = ~start;
    
                //Suchstring größer als letztes Element
                if (start == list.Length) return; 
    
                //Alle Elemente die mit Suchstring beginnen, ausgeben
                while (list[start].StartsWith(searchItem)) {
    
                    Console.WriteLine(list[start]);
                    start++;
    
                    if (start >= list.Length) return; 
                }
    

    Kapsel dir das am besten in einer Klasse.
    Und steig auf 3.5 um das ist ja fast die vierfache Zeilenmenge.



  • ich danke dir.

    irgendwann werd ich das wohl machen müssen 😉


Anmelden zum Antworten