Thread /String+/ ersetzen mit String2 für alle /String+/ (11 answers)
Opened by PerlProfi at 2006-12-03 19:54

Linuxer
 2006-12-04 01:51
#72217 #72217
User since
2006-01-27
3882 Artikel
HausmeisterIn

user image
Hi,

ich finde zwar topeqs Lösung besser (ich meine nicht den Einzeiler! ;o) ), aber der Vollständigkeit halber (und weil ich es nun zusammengeschrieben habe), sei hier meine Lösung auch noch dargestellt.

Diese Variante betrachtet jeden String und zählt ihn mit; also werden zwei aufeinander folgende "drehe_rechts" ebenfalls zu "drehe_rechts (2)".

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/perl
# vi:ts=4 sw=4 et:
use strict;
use warnings;

my $str = <<'EOS';
$r->vor;
$r->vor;
$r->vor;
$r->drehe_rechts;
$r->vor;
$r->vor;
$r->drehe_links;
$r->vor;
$r->vor;
$r->vor;
$r->vor;
$r->vor;
drehe_um;
$r->vor;
EOS

my @elements = split( /\n/, $str );
my ( $last, $cnt ) = ( '', 0);

for my $i ( 0 .. $#elements ) {

if ( $elements[$i] ne $last and $i != 0 ) {

print $last, ( $cnt > 1 ? "($cnt)" : ''), $/;

$cnt=1;
$last = $elements[$i];
next;
}

$last = $elements[$i];
$cnt++;
}

print $last, $/;
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread /String+/ ersetzen mit String2 für alle /String+/