IP-Adresse ab letztem Punkt abschneiden

  • Hi,
    für mein aktuelles Projekt muss ich eine (zuvor über @IPAddress1 ermittelte) Ip-Adresse ab dem letzten Punkt abschneiden und den hinteren Teil (Oktett?) verwerfen. In .NET gab es für solche String Aktionen die ".LastIndexOf" Methode. Meine Frage ist nun wie man so etwas in AutoIT realisieren kann oder ob es gar ein Äquivalent zu .NET, was ich bei meiner bisherigen Recherche leider noch nicht gefunden habe, gibt.

    Freue mich (hoffentlich) auf eure Hilfe.

    Mfg
    Bananenmann

  • Hi wie wäre es mit stringsplit? Am Punkt abtrennen und das letzte Arrayelement wegwerfen.
    Was auch geht ist natürlich regexp :D (was geht damit eigentlich nicht?)
    Wäre das eine Option für dich?

    MfG
    Der_Doc

  • Das Problem ist ja, dass die IP ja immer anders aussieht und ich daher nicht klar vorher festlegen kann, an welcher Position sich der letzte "." befindet. Genau diesen Punkt konte man ja mit LastIndexOf in .NET ermitteln. Bin leider auch neu in AutoIT und kenne mich noch nicht mit den Sprachelementen groß aus (ich brauche eine native Executable am Ende und d. H. AutoIT wäre wohl am besten = schnellsten).

    Edit:
    name22 Danke! Dein Code geht... Wie er jedoch funktioniert verstehe ich nicht? Kannst du das noch so ungefähr erklären damit ich für später Bescheid weiß?

  • @Bananenmann: Klick mal auf die Funktionsnamen und ließ dir die Hilfe durch. Ein Tipp: Das StrinInStr in diesem Beispiel verhält sich ähnlich wie LastIndexOf in .NET.

  • Zitat

    Das Problem ist ja, dass die IP ja immer anders aussieht und ich daher nicht klar vorher festlegen kann, an welcher Position sich der letzte "." befindet.


    Das brauchst du auch gar nicht zu wissen, mit StringSplit kannst du den String nach den Punkten aufteilen und dann einfach alle Array Elemente bis auf das letzte wieder zusammenfügen. Das ist praktischer als meine Methode wenn du z.B. den mittleren Teil o.Ä. entfernen willst.
    Bei StringRegExp brauchst du das auch nicht zu wissen. Hier mal ein Beispiel für StringRegExpReplace.

    [autoit]

    MsgBox(64, "IP", StringRegExpReplace(@IPAddress1, '(\d{1,3}\.\d{1,3}\.\d{1,3})\.\d{1,3}', "$1"))

    [/autoit]
  • [autoit]


    $ip = @IPAddress1
    $3tupel = StringRegExpReplace($ip, "(.*)\.\d+$", "$1")
    MsgBox(0, "Ersten 3 Tupel einer IP Adresse", $3tupel)

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Ok,
    ich bedanke mich für alle Antworten und muss sagen, dass ich die StringRegExpReplace Funktion äußerst gut finde (weil is in .NET fast etwas gleiches mit Regex gab^^).

    Mfg
    Bananenmann