Ankündigung

Einklappen
Keine Ankündigung bisher.

JS: einzelne Buchstaben in String nur einmal suchen&ersetzen?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • JS: einzelne Buchstaben in String nur einmal suchen&ersetzen?

    Hallo,
    gibt es eine Lösung in Javascript only für das bekannte Problem mit dem suchen&ersetzen von einzelnen Buchstaben in einem String?

    string = a b a b c

    ersetzen:
    a -> b
    b -> o
    c -> a

    result falsch: o o o o a

    result richtig: b o b o c

    Beispiel:
    https://jsfiddle.net/suzg6hgd/1/

  • #2
    Hier, http://jsfiddle.net/m8UuD/735/

    Kommentar


    • #3
      müsste nicht 'b o b o a' als Ergebnis kommen ?

      ein Beispiel:

      HTML-Code:
      var a = {'a': 'b', 'b': 'o', 'c': 'a'};
      console.log('a b a b c'.split('').map(v => (a[v] ? a[v] : v)).join(''));
      alternativ:

      HTML-Code:
      console.log('a b a b c'.split('').map(v=>a[v]||v).join(''));

      Kommentar


      • #4
        PHP-Code:
        const str 'a b a b c'.replace(/[abc]/gmatch => {
          return{
            
        a'b',
            
        b'o',
            
        c'a'
          
        }[match];
        }); 
        // "b o b o a" 
        [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

        Kommentar


        • #5
          lottikarotti , so etwas scheint Dich auch zu reizen

          Kommentar


          • #6
            kaminbausatz, du hast natürlich Recht mit 'b o b o a' und bei "split" war ich auch schon angekommen.

            lottikarotti, das sieht schon gut aus. Hast du auch was für einen Zacken schärfer?
            http://jsfiddle.net/m8UuD/736/

            kaminbausatz, deine Lösung scheint annähernd perfekt zu sein, soweit ich das eben testen konnte:
            http://jsfiddle.net/m8UuD/738/
            Falls weitere Tests nicht bestehen, meld ich mich hier wieder, ansonsten besten Dank!

            Kommentar


            • #7
              Zitat von psoido Beitrag anzeigen
              lottikarotti, das sieht schon gut aus. Hast du auch was für einen Zacken schärfer?
              http://jsfiddle.net/m8UuD/736/
              Wo liegt das Problem?

              Code:
              const str = '" a + b + a b c " ;'.replace(/[abc\+;"]/g, match => {
                return{
                  a: 'b',
                  b: 'o',
                  c: 'a',
                  '+': 'plus',
                  ';': 'semi',
                  '"': 'quote',
                }[match];
              }); // "quote b plus o plus b o a quote semi"
              [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

              Kommentar


              • #8
                Zitat von psoido Beitrag anzeigen
                [USER="36587"]deine Lösung scheint annähernd perfekt zu sein, soweit ich das eben testen konnte:....
                Falls weitere Tests nicht bestehen, meld ich mich hier wieder, ansonsten besten Dank!
                Falls sie weitere Test´s Deinerseits nicht bestehen sollte....solltest Du das Problem lösen und hier einstellen oder Deine Anforderung schärfer formulieren,

                In #1 präsentierst Du innerhalb eines "Fiddles" eine exakt von Stackoverflow abgeschriebene Routine....

                In #6 verweist Du auf ein "Fiddle" mit lottikarotti´s Routine und hättest es gerne einen Zacken schärfer, was immer das heißen soll. Es scheint, dass Du diese Routine nicht im Ansatz verstanden, sondern lediglich auch nur (falsch) abgeschrieben hast...

                Programmierst Du auch oder schreibst Du nur ab?

                Kommentar


                • #9
                  ach, kaminbausatz, du Adlerauge, da trifft mich die volle Wucht deiner Strenge. Recht haste, schon wieder.
                  Mein Fiddle hatte ich nicht gepostet, weil es ziemlich wild wurde, und habe mir fix ein einfaches Beispiel geborgt, nachdem ich nicht weitergekommen bin. Wie schon geschrieben war ich schon bei "split" und auch schon bei "match", und mit for Schleife und if/else regex und was weiß ich. Pfeilfunktionen sind mir allerdings etwas Neuland.
                  ... und die div-box <div id="output" rows="4" cols="50"></div> im Fiddle ist ein copy&paste von meinem Fiddle, die eigentlich mal eine textarea war, oder so. Hab mir den Fiddle noch nicht mal gespeichert...

                  Die Lösung von lottikarotti fand ich nicht so prickelnd, wegen dem Regex-Kram. Hatte ich mich auch dran probiert, aber da stößt man schnell an neue Hürden, wegen Regex.

                  alles wird gut!

                  Kommentar

                  Lädt...
                  X