pl: C2A0 und split

Hi,

ist es möglich, für /\s+/ eine Voreinstellung zu treffen, dass das auch für NonBreakingSpaces (C2A0) matcht?

MfG

  1. Hi,

    ist es möglich, für /\s+/ eine Voreinstellung zu treffen, dass das auch für NonBreakingSpaces (C2A0) matcht?

    MfG

    PS/Edit: split /[\s\xC2\xA0]+/, $str zum Heften ;)

    1. Hi,

      ist es möglich, für /\s+/ eine Voreinstellung zu treffen, dass das auch für NonBreakingSpaces (C2A0) matcht? PS/Edit: split /[\s\xC2\xA0]+/, $str zum Heften ;)

      Bist Du sicher, daß die Lösung auch zum Problem paßt?

      Ich hätte eher /(?:\s|\xC2\xA0)+/ erwartet - Deine Konstruktion könnte auch das INVERTED EXCLAMATION MARK ¡ (Bytes C2 und A1) erwischen. Und alle anderen Bytefolgen, die C2 enthalten. Wenn's denn byteweise bearbeitet wird.

      Oder, da es sich wohl um Unicode handeln soll, /[\s\xA0]+/u

      cu,
      Andreas a/k/a MudGuard

      1. hi,

        wenn /u greifen soll, muss der String utf-8-kodiert vorliegen. Dann matcht der Codepoint 0xA0.

        Schönen Sonntag ;)

        1. Hi,

          wenn /u greifen soll, muss der String utf-8-kodiert vorliegen. Dann matcht der Codepoint 0xA0.

          wenn das non-breaking space die Bytefolge C2 A0 hat, ist die Wahrscheinlichkeit, daß der String utf-8-codiert ist, ziemlich hoch …

          cu,
          Andreas a/k/a MudGuard

          1. wenn das non-breaking space die Bytefolge C2 A0 hat, ist die Wahrscheinlichkeit, daß der String utf-8-codiert ist, ziemlich hoch …

            Nein ;) Perl unterscheidet (seit v5.6 im Jahr 2001) intern zwischen Bytesequenzen (legacy) und kodierten Zeichenketten.

            MfG

      2. Bist Du sicher, daß die Lösung auch zum Problem paßt?

        Die Frage ist berechtigt. Nun, der zu splittende Text hat nur diese Zeichen [0-9:\.a-zA-Z] (Uhrzeiten, Zahlen und Funktionsnamen). Das Einzige was an NICHT-ASCII hinzukommt sind die NonBreakSpaces. Von daher darf sowohl an der gesamten Bytefolge C2A0 als auch auch an einzelnen Bytes C2, A0 oder A0, C2 gesplittet werden -- Das Ergebnis ist OK. Wenn man es ganz genau machen will:

           my $nbsp = pack "CC", 0xC2,0xA0;
           my @times = $self->trim($self->param('times')) ?
              split /[\s$nbsp]+/,
        
        # oder 
           split /[^0-9:\.a-zA-Z]+/,
        

        Schön' Sonntag!