Capior: URL-String intelligent kürzen

Hallo

Hat mir jemand PER ZUFALL ;-) eine funktion/regex (wenn möglich in VB(S), JS, C# [am liebsten in VB]), die mir lange urls nach folgendem muster kürzt:

-----------------
"http://www.einlink.de/r/nicht/weiss/warum/er/so/lang/ist.html"

wird zu

"www.einlink.de/.../ist.html"

und

"http://einlink.de/r/weiss/warum/er/so/lang/ist.html"

wird zu

"einlink.de/.../ist.html"
-----------------

Vielen Dank und tschüss
  Capior

  1. Hi,

    Hat mir jemand PER ZUFALL ;-) eine funktion/regex [...]

    Du willst

    • das (weitgehend statische) Protokoll entfernen und
    • alles zwischen dem anschließend ersten bis zum letzten Slash (hinter dem noch Zeichen folgen) durch eine statische Zeichenkette ersetzen.

    Es sollte eigentlich nicht schwer fallen, mit dem für ihre Verwendung notwendige Grundwissen hierzu eine Regular Expression zu erstellen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. hi,

      Du willst

      • das (weitgehend statische) Protokoll entfernen und
      • alles zwischen dem anschließend ersten bis zum letzten Slash (hinter dem noch Zeichen folgen) durch eine statische Zeichenkette ersetzen.

      und anschließend will er sich vermutlich wundern, dass

      http://www.einlink.de/r_nicht_weiss_warum_er_so_lang_ist.html

      immer noch sein layout sprengt :-)

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Moin,

    Hat mir jemand PER ZUFALL ;-) eine funktion/regex (wenn möglich in VB(S), JS, C# [am liebsten in VB]), die mir lange urls nach folgendem muster kürzt:


    "http://www.einlink.de/r/nicht/weiss/warum/er/so/lang/ist.html"

    wird zu

    "www.einlink.de/.../ist.html"

    und

    "http://einlink.de/r/weiss/warum/er/so/lang/ist.html"

    wird zu

    "einlink.de/.../ist.html"

    Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?
    Um solche und ähnliche RegExpe zu erstellen gehst du einfach von links nach rechts durch deine Beispiel, schaust dir an was drin vorkommen muß (direkt übernehmen), was evt. optional ist (mit ? quantifizieren) und was du später noch brauchst (mit () capturen) und setzt anschließend das was du noch brauchst wieder richtig zusammen. Ist doch eigentlich gar nicht so schwer.

    --
    Henryk Plötz
    Grüße aus Berlin
    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    1. Hi,

      Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?

      Ach, RegExpr sind doch für Lamer - außerdem funktionieren sie erst ab JavaScript 1.2.

      Das kann man auch schon mit JavaScript 1.0 lösen - locker in einer Befehlszeile:

      url="http://www.einlink.de/r/weiss/warum/er/so/lang/ist.html";

      alert(url.substring(url.indexOf("//")+2,url.indexOf("/",url.indexOf("//")+2))+(((url.substring((url.substring(0,url.indexOf("/",url.indexOf("//")+2))).length,url.lastIndexOf("/")))?"/...":""))+url.substring(url.lastIndexOf("/")));

      Ist doch eigentlich gar nicht so schwer.

      Sehe ich auch so.

      Gruß, Cybaer

      PS: ;->

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    2. Hi,

      Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?

      Die Performance-Bremse (?:www.)?   ;-)
      Insbes. weil dort anstelle von . . stehen sollte - aber da das keinen / enthält und wegen des folgenden ? optional ist, wird es vom folgenden ([^/]+) mit-erfaßt.

      Und warum setzt Du ans Ende der gekürzten URL ein ^?

      Ein $ mehr kann auch nicht schaden (vor dem 2.!) - ich verlaß mich lieber nicht auf die Greedy-Eigenschaften.

      cu,
      Andreas

      --
      Warum MudGuard?
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Moin,

        Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?

        Die Performance-Bremse (?:www.)?   ;-)

        -v bitte. Also ich weiss ja nicht wie die handelsüblichen RegExp-Engines das behandeln, aber so wie ich es gelernt habe stellt das keine besondere Belastung dar.

        Insbes. weil dort anstelle von . . stehen sollte

        Jaja, schon gut, den vergesse ich bei solchen Gelegenheiten immer :)

        aber da das keinen / enthält und wegen des folgenden ? optional ist, wird es vom folgenden ([^/]+) mit-erfaßt.

        Hier[tm] nicht. Per default ist erstmal alles greedy und wenn da was zum Fressen ist dann wird es gefressen. Mir ist noch keine RegExp-Engine begegnet die eigenmächtig die Ausdrücke umsortieren wollte (was mit den darunterliegenden DFAs auch 'etwas' schwierig wäre).

        Und warum setzt Du ans Ende der gekürzten URL ein ^?

        Fipptehler.

        Ein $ mehr kann auch nicht schaden (vor dem 2.!) - ich verlaß mich lieber nicht auf die Greedy-Eigenschaften.

        Ich schon. Also ich hatte überlegt es reinzusetzen, bin dann aber zu dem Schluß gekommen dass es nicht nötig ist.

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
    3. hallo

      Moin,

      Was spricht gegen s!http://(?:www.)?([^/]+)/.*/([^/]*)!\1/.../\2^!?

      ok, danke, werds mal versuchen...

      Um solche und ähnliche RegExpe zu erstellen gehst du einfach von links nach rechts durch deine Beispiel, schaust dir an was drin vorkommen muß (direkt übernehmen), was evt. optional ist (mit ? quantifizieren) und was du später noch brauchst (mit () capturen) und setzt anschließend das was du noch brauchst wieder richtig zusammen. Ist doch eigentlich gar nicht so schwer.

      schwer schon nicht, vielleicht eher schwierig..(s. Post von MudGuard) ;-)

      danke und tschüss
       capior