String richtig splitten



  • Hi Leute

    Ich habe hostnames die in einen String gelesen werden und möchte diese jetzt bis auf den hostnamen splitten.

    array<System::String^> ^hostsplit = hostInfo->HostName->Split(gcnew array<System::String^>{"."}, StringSplitOptions::RemoveEmptyEntries);
    String ^hname = hostsplit[1];
    

    das funktioniert wunderbar mit hostnames wie zum Beispiel ns1.unitymediagroup.net.
    Aber was ist wenn ich mal ein habe mit mehr punkten dann muss ich den index verschieben.zum Beispiel pool.2332.t-arcor.de

    Ich müsste quasi den index von hinten haben da bei den hostnames das ende immer gleich ist .net .de .com.

    Hat da einer ne Idee?



  • okay habs jetzt so gelöst:

    array<System::String^> ^hostsplit = hostInfo->HostName->Split(gcnew array<System::String^>{"."}, StringSplitOptions::RemoveEmptyEntries);
    					int i = 0;
    					i = hostsplit->Length -2;
    					String ^hname = hostsplit[i];
    

    aber kann doch nicht so richtig sauber sein oder?



  • Nein sauber und sicher ist es nicht. Das Programm kann abstützen, falls du Ausnahmen nicht überprüfst, ob hostsplit sie Länge >=2 hat.

    Spontan würde ich auf Uri-Konstruktor (String, UriKind) tippen, aber wenn ich es richtig verstanden habe braucht das noch ein Schema.

    Nachdem der/die/das (nicht zustreffendes bitte durchstreichen) URI erstellt wurde kannst du mit Uri::DnsSafeHost oder Uri::Host den hostnamen abgefragen.

    Edit: ">=" vor "2" eingefügt



  • super vielen dank

    Uri::DnsSafeHost das hab ich gesucht


Anmelden zum Antworten