ExtractDomain / ExtractFileNameOfDomain oder sowas?



  • gibt es sowas ähnliches?
    ich möchte z.B. aus

    http://www.c-plusplus.net/forum/posting-var-mode-is-newtopic-and-f-is-2.html

    das (domain extrahieren)

    http://www.c-plusplus.net/

    und aus das

    http://www.c-plusplus.net/forum/posting-var-mode-is-newtopic-and-f-is-2.html

    das (dateiname der domain)

    posting-var-mode-is-newtopic-and-f-is-2.html

    gibt es so eine Borland funktion bereits? Falls nicht, wie löst man sowas am besten?



  • domain: vom anfang bis zum ersten einzelnen /
    file: vom letzen einzelnen / bis ende

    siehe AnsiString-funktionen: SubString, LastDelimiter usw.



  • hallo sunday. das ganze dachte ich mir eigentlich genau so. jedoch klappt es mit der domain noch nicht ganz da ich es mit Pos versuche aber ja bereits beim http:// zwei doppel slashs vorkommen geht das wie folgt nicht:

    String url = "http://www.c-plusplus.net/forum/posting-var-mode-is-reply-and-t-is-127069.html";
        //datei
        Edit1->Text = url.SubString(url.LastDelimiter("/") + 1, url.Length() - url.LastDelimiter("/"));
    	//domain
    	Edit2->Text = url.SubString(1, url.Pos("/"));
    

    würde die domain nur mit www. oder gar ohne www. beginnen wäre es möglich. wie soll ich das besser lösen?



  • versuchs so:

    // Domain extrahieren
    AnsiString ExtractDomain(AnsiString URL)
    {
      // http:// entfernen (wenn vorhanden)
      if (URL.Pos("//"))
        URL.Delete(1, URL.Pos("//") + 1);
    
      // dateiname entfernen (wenn vorhanden)
      if (URL.Pos("/")) return URL.SubString(1, URL.Pos("/") - 1);
      else              return URL.SubString(1, URL.Length());
    }
    
    // Dateiname extrahieren
    AnsiString ExtractDomainFileName(AnsiString URL)
    { 
      return URL.SubString(URL.LastDelimiter("/") + 1, URL.Length());
    }
    

    // verwendung

    AnsiString url    = "http://www.c-plusplus.net/forum/posting-var-mode-is-reply-and-t-is-127069.html";
    
    AnsiString datei  = ExtractDomainFileName(url);
    AnsiString domain = ExtractDomain(url);
    


  • danke aber eins versteh ich nun nicht.

    URL.SubString(URL.LastDelimiter("/") + 1, URL.Length());

    wieso reicht es wenn count URL.Length() ist? Ich dachte man müsste es subtrahieren da ja sonst count die totale länge ist, also von anfang an bis ende = count...?



  • das uebernimmt SubString fuer dich. es prüft ob count kleiner ist als die laenge des strings - index + 1. d.h. wenn du dort einen wert grösser als die eigentliche anzahl der zu kopierenden zeichen angibst, dann wird automatisch die korrekte laenge bestimmt.

    p.s. das gilt natürlich nur, wenn du mit SubString von einer bestimmten anfangsposition bis zum letzten zeichen des strings, den teilstring ermitteln möchtest.



  • das amcht sinn danke! man lernt nie aus 🕶


Anmelden zum Antworten