Gleiche Wörter in Array zählen

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Mono.

    Gleiche Wörter in Array zählen

    Hallo zusammen,

    ich hoffe das jemand mir bei meinem Problem helfen kann.
    Leider bin ich noch Anfänger im Scripten und stolpere noch über so einige Sachen.

    Also hier mein Problem.



    Ich habe ein Array mit folgendem Inhalt

    88--->Barc 3
    89--->Barc 3
    90--->Bare II
    91--->Bare 2
    92--->Barc 2
    93--->Bare I
    94--->Bare I
    95--->Barc 3
    96--->Barsei


    Wie kann ich zählen wie oft die verschiedenen Wörter im Array vorhanden sind.
    Irgendwie komme ich auf keine Lösung.

    Kann mir wer bitte einen Tip geben wie die Lösung aussehen könnte.

    Danke und Gruß

    chris
    Hallo,
    du könntest z.b. sowas machen (kein quellcode, nurmal so schnell zusamengetippt!)

    Visual Basic-Quellcode

    1. for i=0 to ArrayEnd
    2. zaehler = 0
    3. for j=0 to ArrayEnd
    4. if array[i] = array[j]
    5. zaehler++
    6. end if
    7. next
    8. wcript.echo "wort" + array[i] + "gibt es" + zaehler + "mal"
    9. next

    Visual Basic-Quellcode

    1. Set dic = CreateObject("Scripting.Dictionary")
    2. For b=0 To UBound(myarr) 'myarr ist das Array, um das es geht
    3. If dic.exists(myarr(b)) Then
    4. dic.Item(myarr(b)) = dic.Item(myarr(b))+1
    5. Else
    6. dic.add myarr(b), 1
    7. End If
    8. Next
    9. k = dic.keys
    10. i = dic.items
    11. For c= 0 To UBound(k)
    12. MsgBox "Den Wert " & k(c) & " gibs " & i(c) & " mal im Array"
    13. Next


    so würde ich es machen.

    gruss mono
    Das ist meine Signatur und sie wird wunderbar sein!

    dictionary object

    hallo zusammen,

    eventuell kan mir jemand bei meinem Problem weiterhelfen bzw mir aufzeigen wie ich hier eine Lösung erarbeiten kann. (Danke an C@tch und Mono für die Beispiele)

    Problemstellung:

    Es gibt eine Liste von Autoherstellern und die dazugehörige Farbpalette als Text datei
    In wieviel Farben hat jeder Hersteller seine Autos verfügbar und wie kann ich hier für jeden Hersteller die dazugehörigen Farben auflisten.
    Lösung der Aufgabe über ein Dictionary Object

    Lösung von mir:

    Einlesen der Datei und mit dem Split Befehl das trennzeichen ist das "= " Zeichen trennen.

    Spoiler anzeigen
    Option Explicit


    Dim objFso
    Dim Objautos
    Dim arrautosA
    Dim autosnextline
    Dim dictHersteller
    Dim hersteller
    Dim item

    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set Objautos = objFSO.OpenTextFile("c:\skripten\autos.txt")
    Set dictHersteller = CreateObject("Scripting.Dictionary")

    Do Until objautos.AtEndOfStream
    autosnextline = objAutos.Readline
    arrautosA = Split(autosnextline , "=")


    Zum besseren Verständnis anbei der Inhalt von

    Set Objautos = objFSO.OpenTextFile("c:\skripten\autos.txt")

    Spoiler anzeigen

    Mercedes=Rot
    Mercedes=blau
    Mercedes=gruen
    Mercedes=gelb
    Mercedes=schwarz
    Mercedes=hellgruen
    Mercedes=braun
    VW=blau
    VW=gruen
    VW=gelb
    VW=schwarz
    VW=hellgruen
    VW=braun
    Mazda=gruen
    Mazda=gelb
    Mazda=schwarz
    Mazda=hellgruen
    Mazda=lila










    Jetzt habe ich meine Infos ja schon in einem Array und kann weiterarbeiten damit.
    Hier is nun der ganze Code

    Visual Basic-Quellcode

    1. Set dic = CreateObject("Scripting.Dictionary")
    2. Set objFso = CreateObject("Scripting.FileSystemObject")
    3. Set Objautos = objFSO.OpenTextFile("c:\skripten\autos.txt")
    4. Do Until objautos.AtEndOfStream
    5. autosnextline = objAutos.Readline
    6. arrautosA = Split(autosnextline , "=")
    7. For b=0 To UBound(arrautosA)
    8. If dic.exists(arrautosA(b)) Then
    9. dic.Item(arrautosA(b)) = dic.Item(arrautosA(b))+1
    10. Else
    11. dic.add arrautosA(b), 1
    12. End If
    13. Next
    14. k = dic.keys
    15. i = dic.items
    16. For c = 0 To UBound(k)
    17. WScript.Echo "Den Wert " & k(c) & " gibts es " & i(c) & " mal im Array"
    18. Next Loop


    Die wscript ausgabe dieses codes gibt mir im prinzip alle details nur bin ich nicht fähig mit diesem Ergebnis weiterzuarbeiten.
    Wie oben bereits erwähnt würde ich gerne alle Hersteller und die dazugehörige Farbpalette auflisten.

    Die Ausgabe des codes ist folgende.

    Spoiler anzeigen
    Den Wert Mercedes gibts es 1 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert Mercedes gibts es 2 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 1 mal im Array
    Den Wert Mercedes gibts es 3 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 1 mal im Array
    Den Wert gruen gibts es 1 mal im Array
    Den Wert Mercedes gibts es 4 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 1 mal im Array
    Den Wert gruen gibts es 1 mal im Array
    Den Wert gelb gibts es 1 mal im Array
    Den Wert Mercedes gibts es 5 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 1 mal im Array
    Den Wert gruen gibts es 1 mal im Array
    Den Wert gelb gibts es 1 mal im Array
    Den Wert schwarz gibts es 1 mal im Array
    Den Wert Mercedes gibts es 6 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 1 mal im Array
    Den Wert gruen gibts es 1 mal im Array
    Den Wert gelb gibts es 1 mal im Array
    Den Wert schwarz gibts es 1 mal im Array
    Den Wert hellgruen gibts es 1 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 1 mal im Array
    Den Wert gruen gibts es 1 mal im Array
    Den Wert gelb gibts es 1 mal im Array
    Den Wert schwarz gibts es 1 mal im Array
    Den Wert hellgruen gibts es 1 mal im Array
    Den Wert braun gibts es 1 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 1 mal im Array
    Den Wert gelb gibts es 1 mal im Array
    Den Wert schwarz gibts es 1 mal im Array
    Den Wert hellgruen gibts es 1 mal im Array
    Den Wert braun gibts es 1 mal im Array
    Den Wert VW gibts es 1 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 2 mal im Array
    Den Wert gelb gibts es 1 mal im Array
    Den Wert schwarz gibts es 1 mal im Array
    Den Wert hellgruen gibts es 1 mal im Array
    Den Wert braun gibts es 1 mal im Array
    Den Wert VW gibts es 2 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 2 mal im Array
    Den Wert gelb gibts es 2 mal im Array
    Den Wert schwarz gibts es 1 mal im Array
    Den Wert hellgruen gibts es 1 mal im Array
    Den Wert braun gibts es 1 mal im Array
    Den Wert VW gibts es 3 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 2 mal im Array
    Den Wert gelb gibts es 2 mal im Array
    Den Wert schwarz gibts es 2 mal im Array
    Den Wert hellgruen gibts es 1 mal im Array
    Den Wert braun gibts es 1 mal im Array
    Den Wert VW gibts es 4 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 2 mal im Array
    Den Wert gelb gibts es 2 mal im Array
    Den Wert schwarz gibts es 2 mal im Array
    Den Wert hellgruen gibts es 2 mal im Array
    Den Wert braun gibts es 1 mal im Array
    Den Wert VW gibts es 5 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 2 mal im Array
    Den Wert gelb gibts es 2 mal im Array
    Den Wert schwarz gibts es 2 mal im Array
    Den Wert hellgruen gibts es 2 mal im Array
    Den Wert braun gibts es 2 mal im Array
    Den Wert VW gibts es 6 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 3 mal im Array
    Den Wert gelb gibts es 2 mal im Array
    Den Wert schwarz gibts es 2 mal im Array
    Den Wert hellgruen gibts es 2 mal im Array
    Den Wert braun gibts es 2 mal im Array
    Den Wert VW gibts es 6 mal im Array
    Den Wert Mazda gibts es 1 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 3 mal im Array
    Den Wert gelb gibts es 3 mal im Array
    Den Wert schwarz gibts es 2 mal im Array
    Den Wert hellgruen gibts es 2 mal im Array
    Den Wert braun gibts es 2 mal im Array
    Den Wert VW gibts es 6 mal im Array
    Den Wert Mazda gibts es 2 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 3 mal im Array
    Den Wert gelb gibts es 3 mal im Array
    Den Wert schwarz gibts es 3 mal im Array
    Den Wert hellgruen gibts es 2 mal im Array
    Den Wert braun gibts es 2 mal im Array
    Den Wert VW gibts es 6 mal im Array
    Den Wert Mazda gibts es 3 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 3 mal im Array
    Den Wert gelb gibts es 3 mal im Array
    Den Wert schwarz gibts es 3 mal im Array
    Den Wert hellgruen gibts es 3 mal im Array
    Den Wert braun gibts es 2 mal im Array
    Den Wert VW gibts es 6 mal im Array
    Den Wert Mazda gibts es 4 mal im Array
    Den Wert Mercedes gibts es 7 mal im Array
    Den Wert Rot gibts es 1 mal im Array
    Den Wert blau gibts es 2 mal im Array
    Den Wert gruen gibts es 3 mal im Array
    Den Wert gelb gibts es 3 mal im Array
    Den Wert schwarz gibts es 3 mal im Array
    Den Wert hellgruen gibts es 3 mal im Array
    Den Wert braun gibts es 2 mal im Array
    Den Wert VW gibts es 6 mal im Array
    Den Wert Mazda gibts es 5 mal im Array
    Den Wert lila gibts es 1 mal im Array


    Wie gehe ich hier am besten vor um diese Daten im Dictionary object zu Filtern und z.B folgende Msgbox auszugeben

    Mercedes hat die folgende Farbpalette Farbe 1,2,3,4,5 usw
    VW....
    Mazda...

    Bin für jede Hilfe Dankbar

    sorry das es so viel ist aber irgendwie hilft es mit auch es zu formulieren um es besser zu verstehen.

    Gutes neues Jahr :)

    chris

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Blutigeranfänger“ ()

    Hi

    Ich würde entweder ein Dictionary in einem Dictionary nutzen oder ein KLasse List Schreiben die Dics aufnehmen kann:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Dim dicA, dicB, objFso, ObjAutos, autos, arrAutoA, arrAutoB, Marke, Farbe, b, AutoIt, AutoKey, FarbKey,a
    3. Set dicA = CreateObject("Scripting.Dictionary")
    4. Set objFso = CreateObject("Scripting.FileSystemObject")
    5. Set ObjAutos = objFSO.OpenTextFile("D:\test\autos.txt")
    6. autos = objAutos.Readall
    7. arrautoA = Split(autos , VBCrlf)
    8. For b=0 To UBound(arrAutoA)
    9. arrAutoB = Split(arrAutoA(b),"=")
    10. Marke = arrAutoB(0)
    11. Farbe = arrAutoB(1)
    12. If dicA.exists(Marke) Then
    13. If dicA.Item(Marke).Exists(Farbe) Then
    14. dicA.Item(Marke).Item(Farbe) = dicA.Item(Marke).Item(Farbe) +1
    15. Else
    16. dicA.Item(Marke).add Farbe, 1
    17. End If
    18. Else
    19. dicA.Add Marke, CreateObject("Scripting.Dictionary") 'füge ein neues Dictionary Objekt hinzu
    20. dicA.Item(Marke).add Farbe, 1 ' diesem fügst du den Namen der Farbe hinzu und die Anzahl (also 1)
    21. End If
    22. Next
    23. AutoIt = dicA.Items
    24. AutoKey = dicA.Keys
    25. For b=0 To dicA.count-1
    26. FarbKey = AutoIt(b).Keys 'dies ist der Zugriff auf das innere Dictionary Objekt, in dem Fall dessen Schlüssel (die Farben also)
    27. WScript.Echo AutoKey(b) & " hat folgende Farben: "
    28. For a=0 To AutoIt(b).count-1
    29. WScript.echo FarbKey(a) & " und zwar sooft " & AutoIt(b).Item(FarbKey(a))
    30. Next
    31. WScript.Echo VbCrLf
    32. Next


    Das wäre ien Beispiel für erstens

    gruss Mono
    Das ist meine Signatur und sie wird wunderbar sein!