neandr: seach() mit Pluszeichen im String

Bei Verwendung der folgenden Abfrage:

myString.search(detail)

erhalte ich nicht das erwartete Ergebnis, wenn im String 'detail' mehrere Pluszeichen sind, also

myString = "xyz++ weiterer Stringteil" detail = "yz"  ergibt  1, OK ebenso detail = "yz+" ergibt  1, OK aber detail = "yz++" ergibt  Caught exception: “SyntaxError: invalid quantifier +”

Wie muß die Abfrage aussehen, damit mit beliebiger Zuweisung zu 'detail' das 'richtige Ergebnis entsteht ... hier also immer '1' ??

  1. Hi,

    myString.search(detail)

    erhalte ich nicht das erwartete Ergebnis, wenn im String 'detail' mehrere Pluszeichen sind

    Die search-Methode des String-Objektes sucht, das hast du der Beschreibung ja sicherlich entnommen, mittels sogenannter reguläre Ausdrücke.

    detail = "yz++" ergibt  Caught exception: “SyntaxError: invalid quantifier +”

    Natuerlich, denn das Zeichen + hat in einem regulären Ausdruck eine Sonderbedeutung.

    Also informiere dich ueber reguläre Ausdrücke.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hallo ChrisB!

      Natuerlich, denn das Zeichen + hat in einem regulären Ausdruck eine Sonderbedeutung.
      Also informiere dich ueber reguläre Ausdrücke.

      Jagst Du Deine Antworten durch eine Routine, welche reguläre Ausdrücke benutzt? Wenn ja, ist die fehlerhaft: Deine Umlaute werden mal umgewandelt, mal nicht.

      *SCNR*

      Viele Grüße aus Frankfurt/Main,
      Patrick

      --
      _ - jenseits vom delirium - _

         Diblom   [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
      J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?
      1. Hi,

        Jagst Du Deine Antworten durch eine Routine, welche reguläre Ausdrücke benutzt? Wenn ja, ist die fehlerhaft: Deine Umlaute werden mal umgewandelt, mal nicht.

        Teils Copy&Paste, teils selber getippt (US-Englische Tastatur).

        Copy&Paste deshalb, weil sich "regulaere Ausdruecke" nun mal wirklich bescheiden liest, und ich die Seite beim Posten eh gerade offen hat, Zwecks Verlinkung.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
  2. @@neandr:

    Bei Verwendung der folgenden Abfrage:

    myString.search(detail)

    Du solltest mal http://de.selfhtml.org/javascript/objekte/string.htm#search@title=nachlesen, was diese Funktion als Parameter erwartet. Auf jener Seite ist auch die Beschreibung des http://de.selfhtml.org/javascript/objekte/regexp.htm@title=RegExp-Objekts verlinkt. Dort wiederum steht: „Umfangreichere Informationen über reguläre Ausdrücke finden Sie innerhalb dieser Dokumentation auf der Seite <http://de.selfhtml.org/perl/sprache/regexpr.htm@title=reguläre Ausdrücke in Perl>.“

    erhalte ich nicht das erwartete Ergebnis, wenn im String 'detail' mehrere Pluszeichen sind

    Dann liest du noch nach, was '+' für eine besondere Bedeutung hat und wie man Zeichen mit besonderer Bedeutung maskiert.

    Live long and prosper,
    Gunnar

    --
    Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
    1. @Gunnar » Dann liest du noch nach, was '+' für eine besondere Bedeutung hat und wie man Zeichen mit besonderer Bedeutung maskiert. » Irgendwie hatte ich ja geahnt, dass hier was besonders dran ist ... aber wie / wo finde ich bitte das alle derartigen Zeichen 'maskiert' werden. Denn der String 'detail' ist ja nicht fix programmiert, sondern wird im Programmablauf unterschiedlich eingelesen .. und da kann ua. ein '+' Zeichen vorkommen. Bzw. ev. auch andere Zeichen die 'maskiert' werden müssen!

      1. Hi,

        Irgendwie hatte ich ja geahnt, dass hier was besonders dran ist ... aber wie / wo finde ich bitte das alle derartigen Zeichen 'maskiert' werden.

        An der Stelle, die Gunnar dir gerade eben verlinkt hatte.
        Lies bitte nach - wenn dir die relevanten Stellen schon genannt werden - *bevor* du wieder rueckfragst!

        Denn der String 'detail' ist ja nicht fix programmiert, sondern wird im Programmablauf unterschiedlich eingelesen .. und da kann ua. ein '+' Zeichen vorkommen.

        Dann muss er, bevor er als Argument fuer search verwendet wird, eben einer speziellen Behandlung, die ihn fuer diesen Zweck vorbereitet, unterzogen werden.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Dann muss er, bevor er als Argument fuer search verwendet wird, eben einer speziellen Behandlung, die ihn fuer diesen Zweck vorbereitet, unterzogen werden.

          OK, hier verstehe ich die notwendige "Schreibweise" eben nicht, deshalb meine Bitte in diesem Forum mir zu helfen. Kannst mir da behilflich sein ?? Danke

          1. Hi,

            OK, hier verstehe ich die notwendige "Schreibweise" eben nicht, deshalb meine Bitte in diesem Forum mir zu helfen.
            Kannst mir da behilflich sein ??

            Gerne, wenn du beschreibst, *was* du nicht verstehst.
            Wie Sonderzeichen in regulaeren Ausdruecken notiert werden muessen, wenn sie keine Sonderzeichenbedeutung haben sollen, hast du ja inzwischen hoffentlich endlich nachgelesen?
            Also, wo liegt das diesbezuegliche Verstaendnisproblem nun *genau*?

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Also, wo liegt das diesbezuegliche Verstaendnisproblem nun genau?

              Nachgelesen habe ich ua. auf http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung

              Wie gesagt wird mein String 'detail' an anderer Stelle vom Benutzer gesetzt, und es nicht ausgeschloosen, dass er zB. '+' oder '(' etc benutzt.

              Um nun mit einem String 'detail' = 'xyz+' oder 'xyz(ab)' in dem anderen String zu suchen, muß ich hier maskieren. Also die Frage: WIE schreibe ich diesen Codeteil????

              Denn "myString.search(detail)" geht ja wohl nicht -- wie gesehen. Wie stelle ich sicher, das alle NOTWENDIGEN Zeichen innerhalb 'detail' maskiert werden??

              Ich hoffe mein Problem ist damit klarer beschrieben. Danke

              1. Hi,

                Nachgelesen habe ich ua. auf http://de.selfhtml.org/perl/sprache/regexpr.htm#maskierung

                Wie gesagt wird mein String 'detail' an anderer Stelle vom Benutzer gesetzt, und es nicht ausgeschloosen, dass er zB. '+' oder '(' etc benutzt.

                Um nun mit einem String 'detail' = 'xyz+' oder 'xyz(ab)' in dem anderen String zu suchen, muß ich hier maskieren. Also die Frage: WIE schreibe ich diesen Codeteil????

                Dazu koenntest dir eine Methode suchen, mit der du nach bestimmten Zeichen in einem String suchen, und sie durch etwas anderes ersetzen kannst.

                Aber damit wirst du dich vermutlich noch weiter in den tiefen, dunklen Wald namens "regulaere Ausdruecke" verirren ... also moechtest du nicht vielleicht doch lieber noch mal dem Hinweis nachgehen, dass das Suchen nach dem Vorkommen einer Zeichenfolge in einer anderen mit einer anderen Methode auch ohne regulaere Ausdruecke geht?

                Schau dir die Uebersicht der Methoden des String-Objektes noch mal an.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
      2. Hi,

        Irgendwie hatte ich ja geahnt, dass hier was besonders dran ist ... aber wie / wo finde ich bitte das alle derartigen Zeichen 'maskiert' werden.

        Zeichen mit einer Sonderbedeutung, die Du nicht wünschst, müssen *immer* und *überall* maskiert werden. Beispielsweise auch &-Zeichen in einer URL, wenn Du sie in das href-Attribut eines Links einbringen willst. Dies ist ein Grundprinzip der Informatik, ohne dass Computer nicht existieren würden.

        Denn der String 'detail' ist ja nicht fix programmiert, sondern wird im Programmablauf unterschiedlich eingelesen .. und da kann ua. ein '+' Zeichen vorkommen.

        Wenn Du überhaupt keine Regular Expression benötigst, warum verwendest Du dann überhaupt Methoden, die sie verwenden?

        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. Wenn Du überhaupt keine Regular Expression benötigst, warum verwendest Du dann überhaupt Methoden, die sie verwenden?

          Sorry, versteh ich jetzt nicht: ich doch "nur" wissen ob in einem String ein anderer enthalten ist. Also brauche ich doch eine 'Methode'? und wenn die eine Maskierung von 'Sonderzeichen' braucht, dann ist es eben so. Prima. Aber bitte, kannst mir HELFEN auszuzeigen wie ich diese 'Maskierung' schreiben muss. Damit wäre mir wirklich geholfen. Danke.

          1. Hi,

            Sorry, versteh ich jetzt nicht: ich doch "nur" wissen ob in einem String ein anderer enthalten ist. Also brauche ich doch eine 'Methode'?

            Ja, schon moeglich.

            und wenn die eine Maskierung von 'Sonderzeichen' braucht, dann ist es eben so. Prima.

            Es gibt auch noch andere Methoden - die keine regularen Ausdruecke verwenden - bei denen braeuchte es dann auch gar keine Maskierung.

            Aber bitte, kannst mir HELFEN auszuzeigen wie ich diese 'Maskierung' schreiben muss.

            Gunnar hat dir drei Stellen verlinkt, an denen du relevante Informationen findest. Wenn du das Ganze also nach wie vor mit regulaeren Ausdruecken loesen willst (wo von ich, ebenso wie Cheatah, abraten wuerde) - dann informiere dich bitte endlich.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. »»Wenn du das Ganze also nach wie vor mit regulaeren Ausdruecken loesen willst (wo von ich, ebenso wie Cheatah, abraten wuerde) - dann informiere dich bitte endlich.

              Sorry, ich finde nicht an welcher Stelle mir von der Verwendung von regulären Ausdrücken abgeraten wird. Bzw. was dann die Alternative ist.

              Bitte hierzu einen Hinweis. Danke

              1. Hi,

                Sorry, ich finde nicht an welcher Stelle mir von der Verwendung von regulären Ausdrücken abgeraten wird.

                Von Cheatah indirekt in seiner vorherigen Antwort, in der er kritisch nachfragte, warum du sie ueberhaupt verwenden willst, wenn du ihre Moeglichkeiten (naemlich *Muster*suche) doch offenbar gar nicht brauchst; und von mir dann noch mal, in dem ich mich dieser seiner Einschaetzung noch mal ausdruecklich anschliesse.

                Bzw. was dann die Alternative ist.

                Die Verwendung einer anderen Methode des String-Objektes.

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
                1. Hi,

                  ich verstehe nicht warum ihr so viele Worte, Verweise usw. macht. Die Welt ist doch kompliziert genug.

                  Warum kann von euch keiner einfach schreiben: Mach es so: mystring.indexOf(detail)

                  Wäre doch viel einfacher als das ganz (sorry) Klug-Gescheisse.

                  Nix für Ungut, letztlich geht's und das zählt ;-)

                  1. Hi,

                    Warum kann von euch keiner einfach schreiben:
                    Mach es so:
                    mystring.indexOf(detail)

                    Na also, es klappt doch - du bist in der Lage, geeignete Methoden selber zu finden (wenn man dich nur oft genug auf die Dokumentation verweist).

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“
                    1. Na also, es klappt doch - du bist in der Lage, geeignete Methoden selber zu finden (wenn man dich nur oft genug auf die Dokumentation verweist).

                      Die Seiten SELFHTML sind mir seit langem eine große Hilfe, das Forum habe ich bisher aber so gut wie nicht genutzt / beachtet.

                      Und ich kann mir einen kritischen Kommentar nicht verkneifen:
                      Wenn Hilfe erbeten wird, nützt Oberlehrerhaftes Gehabe (siehe ua. oben) nicht .. überhaupt nicht. Es schafft Aggressionen auf allen Seiten, und wofür?

                      Knappe aussagekräftige Antworten sind bei weitem nützlicher. Sicher sollte der Fragende "lernen", sein Wissen vertiefen, aber hilft es weiter nur Verweise zu geben, Andeutungen zu machen und 'nicht' an Beispielen zu erläutern welches die bessere Lösung ist. Und NICHT auf die explizite Bitte nach einer Lösung einzugehen??

                      In diesem Sinne. Danke für Eure Hilfe.

                      1. Hi,

                        Und ich kann mir einen kritischen Kommentar nicht verkneifen:

                        Tja, so geht's mir angesichts deiner Argumentation mit dem Gaehnen.

                        Wenn Hilfe erbeten wird, nützt Oberlehrerhaftes Gehabe (siehe ua. oben) nicht .. überhaupt nicht. Es schafft Aggressionen auf allen Seiten, und wofür?

                        Wer ist denn aggressiv? Du etwa - weil von dir erwartet wurde, dass du mal ein bisschen was selber nachliest?

                        Knappe aussagekräftige Antworten sind bei weitem nützlicher.

                        Die Antworten waren kurz genug gehalten; und fuer hilfreich genug halte ich sie auch.
                        Hey, du konntest doch dein Problem jetzt loesen - wie viel "mehr" an "hilfreich" erwartest du denn noch?

                        Sicher sollte der Fragende "lernen", sein Wissen vertiefen, aber hilft es weiter nur Verweise zu geben,

                        Schlimm genug, dass man auf die Doku ueberhaupt immer wieder hinweisen muss - die sollte der Fragende doch zuallererst und selber konsultiert haben.

                        Andeutungen zu machen und 'nicht' an Beispielen zu erläutern welches die bessere Lösung ist. Und NICHT auf die explizite Bitte nach einer Lösung einzugehen??

                        "Bitten", sogar Fordern, kannst du natuerlich viel.
                        Das heisst aber nicht, dass du auch alles serviert bekommst, wonach dir gerade der Sinn steht.

                        Wir haben dich darauf hingewiesen, warum dein Ansatz nicht sonderlich optimal ist, und wo du stattdessen nach einem anderen Ausschau halten solltest - und das hat ja auch geklappt. Was willst du denn jetzt bloss noch?

                        Wenn in der Art und Weise "Hilfe" gefordert wird, wie von dir jetzt wieder - da frag ich mich meistens, ob die Leute, die derart fordern, sich den Hintern schon alleine abwischen koennen - oder auch diesbezueglich nichts dazulernen wollten, und lieber "machen lassen".

                        MfG ChrisB

                        --
                        „This is the author's opinion, not necessarily that of Starbucks.“
                      2. Hallo,

                        Knappe aussagekräftige Antworten sind bei weitem nützlicher.

                        nein, nur dann, wenn man erkennt, dass der Fragende das Thema "im Prinzip" beherrscht und nur bestimmte Details sucht.

                        Sicher sollte der Fragende "lernen", sein Wissen vertiefen, aber hilft es weiter nur Verweise zu geben, Andeutungen zu machen und 'nicht' an Beispielen zu erläutern welches die bessere Lösung ist. Und NICHT auf die explizite Bitte nach einer Lösung einzugehen??

                        Ja. Die Lösung fix und fertig zu präsentieren, führt meistens dazu, dass der Hilfesuchende a) immer noch nicht verstanden hat, was der entscheidende Punkt ist und b) beim nächsten Mal erst recht wieder ankommt und fragt, weil das ja so viel bequemer ist als selbst nachzudenken oder zu recherchieren.
                        Hat sich derjenige aber -wenn auch mit etwas Unterstützung- die Lösung selbst erarbeitet, ist das Erfolgserlebnis größer, und der Lerneffekt auch.

                        Ciao,
                         Martin

                        --
                        Letztlich basiert alles auf dem Feuer, dem Rad, der Eins und der Null.
                          (Gernot Back)
        2. Hallöle!

          Sorry, dass ich mich hier so reinhänge, aber es ist mir wichtig: Liest du eigentlich deine Mails?

          File Griese,

          Stonie

          --
          It's no good you trying to sit on the fence
          And hope that the trouble will pass
          'Cause sitting on fences can make you a pain in the ass.
          Und im Übrigen kennt auch Stonie Wayne.
          1. Hi Stonie,

            Sorry, dass ich mich hier so reinhänge, aber es ist mir wichtig: Liest du eigentlich deine Mails?

            das kommt auf die Adresse an, an die Du schickst ... Endet sie auf "de.de"?

            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. Guten Morgen Cheatah,

              das kommt auf die Adresse an, an die Du schickst ... Endet sie auf "de.de"?

              Jawohl, und mein Absender endet auf .org. ;o)

              Jetzt ist es dann doch nicht mehr so dringend, aber nächsten Donnerstag dann wieder.

              File Griese,

              Stonie

              --
              It's no good you trying to sit on the fence
              And hope that the trouble will pass
              'Cause sitting on fences can make you a pain in the ass.
              Und im Übrigen kennt auch Stonie Wayne.
              1. Hi,

                Jawohl, und mein Absender endet auf .org. ;o)

                gefunden :-)

                Jetzt ist es dann doch nicht mehr so dringend, aber nächsten Donnerstag dann wieder.

                Donnerstag ist für mich leider kein besonders guter Tag. Deswegen war ich in letzter Zeit auch selten bis nie da. Ich versuche mal, ihn mir die nächste Woche freizuhalten ...

                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