URL in zwei Strings aufteilen

  • URL in zwei Strings aufteilen

    Hallo Leute,

    ich brauche mal wieder den Rat von den ganzen Profis hier.

    Folgendes:

    ich möchte gerne eine URL in zwei stringvariablen aufteilen, wobei die URL aber verschiedene Längen und Inhalte haben kann. Die URL steht bereits in einem String.

    variable 1 soll nur den string beinhalten, der einschließlich Port beinhaltet
    variable 2 soll alles nach der portangabe beinhalten, dazu kann aber die url mal auch keinen port beinhalten, trotzdem aber weitergehen.

    Beispiele:


    myaccount.dyndns.org:8272/blablabla
    variable1: myaccount.dyndns.org:8273
    variable2: blablabla

    http:/192.168.2.10
    variable1: 192.168.2.10
    variable2: leer

    http:/192,168.2.10:80/index.htm
    variable1: http:/192,168.2.10:80
    variable2: index.htm


    Habe mich durch NSString gewühlt, weiß aber nicht wie ich´s anstellen soll.

    Kann jemand mir ein Beispiel dafür geben, wie man sowas macht?


    Vielen Dank
    Gruß
    Dirk
  • @dronedeveloper: ich merk schon: Du bist mein Mann! ;)

    Ich beiss mich so durch und habe mir folgende Zeilen zusammengereimt:

    Quellcode

    1. NSString *txt = [NSString stringWithContentsOfURL:[NSURL URLWithString:[[_url stringValue] stringByAppendingPathComponent:@"user/trigger.txt"]] encoding:NSASCIIStringEncoding error:nil];
    2. if ([txt isEqualToString:@"1"])
    3. {
    4. [_window orderFrontRegardless];
    5. [NSApp requestUserAttention:NSCriticalRequest];
    6. }


    in "_url" steht jetzt mein Pfad. Das funktioniert auch, wenn der Pfad nur z.B."http://192.168.2.10:80" heißt.
    Wenn allerdings in _url nun "http://192.168.2.10:80/index.php?configuratorID=22387" steht, kann ich da ja nicht einfach "user/trigger.txt" dranhängen, sondern muss erst alles hinter 192.168.2.10:80/" abschneiden.

    Der code mag für euch Profis grausig sein, hat aber bisher für mich funktioniert. Bin ja noch im ersten Lehrjahr ;)

    Deshalb meine Frage, wie ich das abgeschnitten bekomme, wenn aber der erste Teil des Pfads auch unterschiedlich lang sein kann und einmal der Port dranhängt,dann wieder nicht.
    Ist das so verständlich in meiner einfachen "Noob-Sprache" ausgedrückt???

    Für lehrhaftes bin ich dankbar und würde mich über einen Lösungsvorschlag echt freuen.

    Danke

    Gruß
    Dirk
  • Danke für die Links.
    Habe mir das mal durchgeschaut. Ist das richtig, daß ich da was mit baseURL machen muss? Also ist baseURL die Authority, oder?

    Hab auch ein wenig gefummelt, bekomme es aber nicht in das oben genannte Code-Schnipsel eingebaut.

    Ich fummel und les auch kräftig weiter, befürchte aber das ich das ohne Hilfe nicht hinbekomme.

    Gruß
    Dirk
  • Also wirklich! Das sind absolute Basics. Warum fragst du nicht deinen Ausbilder?

    Mach deinen Code erstmal ein bisschen übersichtlicher.

    Quellcode

    1. NSString *anUrlString = [[_url stringValue] stringByAppendingPathComponent:@"user/trigger.txt"];
    2. NSURL *anUrl = [NSURL URLWithString:anUrlString];
    3. NSString *theUrlString = [NSString stringWithFormat:@"%@://%@:%@", [anUrl scheme], [anUrl host], [anUrl port]];
    4. NSURL *theUrl = [NSURL URLWithString:theUrlString];
    5. NSLog(@"Vorher: %@ Nachher: %@", anUrl, theUrl);
    6. NSString *txt = [NSString stringWithContentsOfURL:theUrl];

    usw.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von DroneDeveloper ()

  • @DroneDeveloper:

    Vielen Dank!!!

    Die Ausbilder seid doch ihr! ;)
    Ich beiss mich da alleine rein, hab mir auch schon Bücher gekauft, die ich jetzt von Anfang an durcharbeite. Das dauert natürlich.... aber man ist ja ungeduldig ;)

    Außerdem bin ich in einem Alter, wo man sich mit sowas eigentlich nich mehr beschäftigt. Also jenseits von Gut und Böse.
    Deshalb erlaub ich mir ja auch, hier die einfachsten Fragen stellen zu dürfen ;)

    Danke nochmal. Ich beiß mich da jetzt durch um zu verstehen, was Du mir zum Üben gegeben hast.

    Gruß
    Dirk
  • @DroneDeveloper:

    Guck mal:



    Vorher: http:/myaccount.dyndns.org:8282/user/trigger.txt Nachher: http://(null):(null)

    Warum fehlt denn bei "Vorher" da nu ein Slash nach http??? Und die vielen (null) gefallen mir auch nicht wirklich...

    Weiter gehts.... ich find das! Oder auch nich

    GRRRRRRRR
  • DroneDeveloper schrieb:

    Bin ja noch im ersten Lehrjahr ;)

    Bezogen auf die Erfahrungen mit Cocoa/Objective-C. Nicht auf eine Ausbildung.
    Zumindest so zwischen den Zeilen gelesen. ;)

    Warum da nur ein / hinterm http: steht? Vermutlich steht das so in _url drin.
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • Es liegt an stringByAppendingPathComponent, schließlich handelt es sich nicht um einen Pfad.

    So muss es aussehen:

    Quellcode

    1. NSString *anUrlString = @"http://myaccount.dyndns.org:8282";
    2. NSURL *anUrl = [[NSURL URLWithString:anUrlString] URLByAppendingPathComponent:@"user/trigger.txt"];
    3. NSString *theUrlString = [NSString stringWithFormat:@"%@://%@:%@", [anUrl scheme], [anUrl host], [anUrl port]];
    4. NSURL *theUrl = [NSURL URLWithString:theUrlString];
    5. NSLog(@"Vorher: %@ Nachher: %@", anUrl, theUrl);