Thread Steuerzeichen ausgeben: ohne es auszufühen (15 answers)
Opened by pktm at 2006-07-15 01:17

sid burn
 2006-07-16 23:07
#68109 #68109
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Code: (dl )
m/\s+|\s*\t|\s*\n\r?|und so weiter/g)

"\s" selber steht NICHT für Leerzeichen, sondern für Whitespace Zeichen. Ein Whitespace Zeichen ist jedes Zeichen das bei einem Ausdruck z.B. keine Farbe verschwenden würde. Dein kompletter Regulärer Ausdruck kannst du also auf folgendes kürzen.
Code: (dl )
m/\s/g

Da \s bereits \t, \n, \r etc. enthält sind deine ganzen Alternativen hinfällig.

Ansonsten könntest du es folgendermaßen machen, dass du ein Hash aufbaust dessen Schlüssel der ASCII Wert des Zeichen ist, und der Wert den String den du ausgeben möchtest.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use warnings;
use strict;

my $text = "Hallo\t\r\nWelt foo";

my %symbols = (
ord " " => '[SPACE]',
ord "\n" => '\n',
ord "\t" => '\t',
ord "\r" => '\r',
);

while ( $text =~ m/\G (\S*) (\s) (\S*) /gx ) {
print $1,
$symbols{ ord($2) },
$3;
}
print "\n";


Ausgabe:
Code: (dl )
Hallo\t\r\nWelt[SPACE][SPACE][SPACE]foo
\n\n

<!--EDIT|sid burn|1153077948-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Steuerzeichen ausgeben: ohne es auszufühen