+ Antworten
Ergebnis 1 bis 8 von 8

Thema: [JS] function String.prototype.afterbefore

  1. #1
    jspit ist offline Haudegen jspit befindet sich auf einem aufstrebenden Ast
    registriert
    19-06-2009
    Beiträge
    546

    [JS] function String.prototype.afterbefore

    Hi,
    hab eine Stringfunktion geschrieben, die einen Substring liefert der hinter 'after' und
    vor 'before' eingebettet ist (substring-after-before). Die Funktionalität von
    "substring-before" und "substring-after" ist mit enthalten.
    Getestet FF 3.5, IE, Opera 9.62
    Das Problem mit Regulären Ausdrücken zu lösen ist mir nicht gelungen.

    Hier der Code:
    PHP-Code:
    <!doctype html public "-//W3C//DTD HTML 4.0 //EN">
    <
    html>
    <
    head>
    <
    title>Test String.prototype.afterbefore</title>
    <
    script type="text/javascript">
    <!--
    //Liefert Teilstring der hinter after beginnt und vor before endet
    //Liefert '' wenn after nicht gefunden wird oder hinter after der String before nicht gefunden wird
    //Liefert mit after='' den Teilstring bis vor before (substring-before)
    //Liefert mit before='' oder ohne before den String hinter after bis zum Ende (substring-after)
    String.prototype.afterbefore = function (afterbefore){
        var 
    this;
        var 
    pfs s.indexOf(after);
        if ( 
    pfs 0) return '';
        var 
    lfs after.length;
        var 
    pts s.length;
        if(
    before) {
          
    pts s.indexOf(beforepfs+lfs);
          if( 
    pts 0) return '';
        }
        return 
    s.substring(pfs lfspts);
    }

    //folgende Zeilen dienen zur Demonstration der function string.afterbefore
    var bodytext "";
    var 
    unescape(location.search);
    if (
    =="") {
      
    "?rp=15&r4=89&p=123";
      
    bodytext "Keine Zeichenkette hinter ? in URI, zur Demo '" "'<br>"
    }
    p.afterbefore("?"); //alles in der Aufrufzeile hinter ?
    "&" "&";

    bodytext += "Der erste Parameter ist:'" p.afterbefore("&","&") + "'";
    bodytext += "<br>Der zweite Parameter ist:'" p.afterbefore("&").afterbefore("&","&") + "'";
    bodytext += "<br>Der Parameter 'p' hat den Wert:'" p.afterbefore("&p=","&") + "'";
    //-->
    </script>
    </head>
    <body>
    <h1>Test String.prototype.afterbefore</h1>
    <script type="text/javascript">
    <!--
    document.write(bodytext);
    //-->
    </script>
    </body>
    </html> 

    Bin dankbar für Feedback.

  2.    Empfehlenswerte Literatur von unserem Partner Terrashop

    Das AJAX Kompendium jetzt 84% Rabatt
    Ajax - der Technologiemix aus JavaScript und XML - ist eines der Kernstücke professioneller Web 2.0-Programmierung. Dieses Buch führt Sie auf über 800 Seiten(!) von den ersten JavaScript-Codezeilen bis zur Entwicklung mit Ajax-Frameworks.

    Preis: früher: 49,95€ - jetzt nur: 7,95€

    Hier geht es direkt zum Buch

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!

  3. #2
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member Junkee[] befindet sich auf einem aufstrebenden Ast
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    1.611

    AW: [JS] function String.prototype.afterbefore

    Code:
    String.prototype.afterbefore= function(a, b) {
    			var str = this;
    			var af = str.search(new RegExp(a))+a.length;
    			var be = str.search(new RegExp(b));
    			return (str.substr(af, be-af));
    		}
    berücksichtigt keine falschen eingaben.

  4. #3
    jspit ist offline Haudegen jspit befindet sich auf einem aufstrebenden Ast
    registriert
    19-06-2009
    Beiträge
    546

    AW: [JS] function String.prototype.afterbefore

    Zitat Zitat von Junkee[] Beitrag anzeigen
    Code:
    String.prototype.afterbefore= function(a, b) {
    			var str = this;
    			var af = str.search(new RegExp(a))+a.length;
    			var be = str.search(new RegExp(b));
    			return (str.substr(af, be-af));
    		}
    berücksichtigt keine falschen eingaben.
    Ja, ok. 'str.search(new RegExp(b));' liefert aber ebenso nur die Position wie indexOf, nur vermutlich langsamer. Ich dachte mit meiner Bemerkung an str.match(), um alles mit einer Zeile zu erschlagen.

  5. #4
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member Junkee[] befindet sich auf einem aufstrebenden Ast
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    1.611

    AW: [JS] function String.prototype.afterbefore

    Ist schwer, da RegExp keine Variablen annhemen.

  6. #5
    jspit ist offline Haudegen jspit befindet sich auf einem aufstrebenden Ast
    registriert
    19-06-2009
    Beiträge
    546

    AW: [JS] function String.prototype.afterbefore

    Zitat Zitat von Junkee[] Beitrag anzeigen
    Ist schwer, da RegExp keine Variablen annhemen.
    Aua, nicht so leicht ja, aber dass RegExp keine Variablen annimmt dürftest du mit deinem eigenen Beispiel widerlegt haben.

  7. #6
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member Junkee[] befindet sich auf einem aufstrebenden Ast
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    1.611

    AW: [JS] function String.prototype.afterbefore

    Sorry! Es geht doch.

    Bsp.
    Code:
    		var regexp = "[0-9\.]+";
    		var flags = "g";
    		var string = "asd 12.5 asd12.8";
    		var match = string.match(new RegExp(regexp, flags));
    		alert(match);

  8. #7
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member Junkee[] befindet sich auf einem aufstrebenden Ast
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    1.611

    AW: [JS] function String.prototype.afterbefore

    Code:
    String.prototype.afterbefore= function(a, b) {
    	return(this.match(new RegExp(a+"(.*?)"+b))[1]);
    }
    Da hast du deine Funktion ABER sobald dort zeichen die in RegExp benutzt werden vorkommen, wird es nicht funktionieren.

  9. #8
    jspit ist offline Haudegen jspit befindet sich auf einem aufstrebenden Ast
    registriert
    19-06-2009
    Beiträge
    546

    AW: [JS] function String.prototype.afterbefore

    @Junkee[], vielen Dank für deine Mühe. Ist eine interessante Lösung. Das Ganze in eine Funktion zu packen ist damit auch überflüssig, und dann hat man es ja in Bezug der Zeichen selbst in der Hand.

+ Antworten

Ähnliche Themen

  1. [JS] getElementById is not a function
    Von Hudrator im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 15-02-2008, 13:36
  2. Frage zum DHTML-Menu
    Von Bubumann38 im Forum JavaScript
    Antworten: 1
    Letzter Beitrag: 11-12-2007, 12:16
  3. bbcode - javascript
    Von archipage im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 26-10-2007, 13:15
  4. Antworten: 17
    Letzter Beitrag: 05-07-2006, 16:09
  5. Antworten: 9
    Letzter Beitrag: 17-06-2002, 13:16

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein