Alle Whitespace Charaktere? Ist es sprachunabhängig?

8

Ich habe mich gefragt, ob die gesamte Sprache die gleichen Zeichen wie Leerzeichen behandelt, oder gibt es Variationen.

Kann jemand eine vollständige Liste von Leerzeichen zur Verfügung stellen, die die von der Tastatur ausgehende trennen? Wenn es anders ist, wäre der Unterschied und der Grund angemessener. Jede Sprache ist hilfreich, wenn Sie Whitespace oder seine Varianten (falls vorhanden) nicht hervorheben. Ich will sicherlich keine komplette Liste für Sprache wie Whitespace :)

    
sakibmoon 11.08.2013, 05:18
quelle

3 Antworten

16

Ob ein bestimmtes Zeichen als Whitespace-Zeichen kategorisiert wird oder nicht, sollte vom verwendeten Zeichensatz abhängen. Trotzdem ist es nicht unmöglich, dass eine Programmiersprache ihre eigene Definition von Whitespace definieren kann.

Die meisten modernen Sprachen verwenden den Unicode-Zeichensatz, wobei eine Definition für Leerzeichentrennzeichen enthält. Jedes Zeichen in der Kategorie Zs ist ein Leerzeichentrennzeichen .

Sie können die vollständige Liste hier sehen . Zusätzlich können Sie in der offiziellen Unicode-Zeichendatenbank nach ;Zs; grep suchen, um diese Zeichen zu sehen. Beachten Sie, dass die Anzahl der Zeichen in dieser Kategorie zunehmen kann, wenn neue Unicode-Versionen entstehen. Daher werde ich nicht sagen, wie viele solche Zeichen existieren, und auch nicht versuchen , sie aufzulisten.

Neben der Zs Unicode -Kategorie definiert Unicode auch Zeichen < em> Eigenschaften . Zu den von Unicode definierten Eigenschaften gehört eine Whitespace-Eigenschaft. Ab Unicode 7.0 umfassen Zeichen mit dieser Eigenschaft alle Zeichen mit Kategorie Zs plus ein paar Steuerzeichen (einschließlich U + 0009, U + 000A, U + 000B, U + 000C, U + 000D und U + 0085). Sie können alle Zeichen mit der Whitespace-Eigenschaft auf Unicode.org hier finden.

Jetzt haben viele Sprachen, sogar moderne, spezielle Symbole für reguläre Ausdrücke wie \s oder [:space:] , aber Vorsicht, diese beziehen sich nur auf bestimmte Zeichen aus dem ASCII-Satz; im Allgemeinen sind diese auf

beschränkt
  • SPACE (Codepunkt 32, U + 0020)
  • TAB (Codepunkt 9, U + 0009)
  • LINE FEED (Codepunkt 10, U + 000A)
  • LINE TABULATION (Codepunkt 11, U + 000B)
  • FORM FEED (Codepunkt 12, U + 000C)
  • CARRIAGE RETURN (Codepunkt 13, U + 000D)

Nun ist diese Liste interessant, weil sie nicht nur Leerzeichen (Zs) enthält, sondern auch aus der Kategorie "Control, Other" (Cc). Dies ist, was eine Programmiersprache im Allgemeinen bedeutet, wenn sie den Begriff "Leerzeichen" verwendet.

Der beste Weg, Ihre Frage nach einer "vollständigen Liste" von Leerzeichen zu beantworten, ist wahrscheinlich die Aussage "es kommt darauf an, was Sie meinen". Wenn Sie "klassisches Leerzeichen" meinen, sind es wahrscheinlich die sechs oben aufgeführten Zeichen. Wenn Sie etwas "moderneres" wollen, dann ist es die Vereinigung dieser sechs mit allen Zeichen aus der Unicode-Kategorie Zs. Andererseits müssen Sie möglicherweise auch in andere Blöcke schauen (z. B. U + 1361, wie in einem Kommentar zu Ihrer Frage von Jerry Coffin erwähnt). Es hängt auch davon ab, was Sie mit diesen Leerzeichen machen wollen.

Nun noch eine letzte Sache: Unicode hat noch nicht alle Zeichen der Welt; es wächst weiter. Es ist möglich, dass eines Tages neue Leerzeichen hinzugefügt werden. Vorerst sind die Kategorie Zs + die Klassiker die beste Wahl.

    
Ray Toal 11.08.2013, 05:41
quelle
6

Ray's Antwort gibt gute Informationen, aber leider fehlen 3 Leerzeichen. : (

Update: Ray hat seitdem seine schon damals gute Antwort aktualisiert, um jetzt noch mehr thoro und fertig zu sein. Ich wusste nicht, dass es so kompliziert ist wie es ist. :) Für eine "einfache" Antwort stelle ich folgendes zur Verfügung. Aber es ist sehr nützlich, die zusätzlichen Komplikationen zu verstehen, die er sehr schön erklärt.

Derzeit gibt es 25 Unicode-Leerzeichen mit folgenden hexadezimalen Codepunkten:

%Vor%

Entsprechende Dezimalwerte sind:

%Vor%

Meine Referenz ist die offizielle Unicode-Website selbst, wo ich nach "whitespace" gesucht habe. So wie der Ausdruck lautet, habe ich es "aus dem Maul des Pferdes". Wenn Sie zu Ссылка gehen, erhalten Sie 2 Frames mit einem linken Navigationsrahmen, wo Sie auf den 3. Link unter der Hilfe klicken können Link, der die Whitespace-Verknüpfung ist. Leider ist der angezeigte Rahmen nicht sehr benutzerfreundlich. Der angezeigte Frame enthält jedoch eine unformatierte Liste von all hexadezimalen Werten jedes Unicode-Leerzeichens. Ich glaube, dass diese Seite die "offizielle" Antwort ist, die man bekommen kann.

    
Shawn Kovac 27.01.2015 20:56
quelle
-4

Wenn Sie nach einer effizienten Methode suchen, verwende ich den folgenden Code:

%Vor%

0 bis 31 sind die Steuerzeichen, 32 ist das Leerzeichen und 127 ist das ESC-Zeichen. Dies funktioniert für alle Zeichensätze, die ich kenne, einschließlich UTF-8.

    
nikdeapen 21.07.2015 01:07
quelle

Tags und Links