Thread suchen / ersetzen >> nur 2. / 3. / 4. Treffer ?!?: suchen ersetzen Problem (6 answers)
Opened by Gast at 2006-07-11 18:24

Linuxer
 2006-07-11 21:40
#68049 #68049
User since
2006-01-27
3872 Artikel
HausmeisterIn

user image
Hallo,
hier mein Vorschlag:
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
#!/usr/bin/perl
# vi:ts=4 sw=4 et:
use strict;
use warnings;

#> global variables
#> ----------------------------------------------------------------------------

use vars qw( $str $what $for $pos $last $cnt );

$str = 'aasdf asdlfa dasf'; # welcher string soll bearbeitet werden
$what = 'a'; # was suchen wir
$for = 'xxx'; # womit wollen wir es ersetzen
$pos = 2; # das wievielte auftauchen soll ersetzt werden


#> main script
#> ----------------------------------------------------------------------------

( $last, $cnt ) = ( 0, 0 ); # initialisiere counter

# solange wir das gesuchte finden
while ( $last > -1 ) {

# ermittle position(en) des gesuchten
$last = index($str, $what, $last);

# ende der schleife, wenn nix mehr gefunden;
# oder erhoehe den trefferzaehler
$last == -1 ? last : $cnt++;

# ersetze in $str das auftreten von $what mit $for
# wenn die gezaehlten treffer $cnt der gewuenschten anzahl $pos
# entsprechen
substr($str, $last, length($what), $for) if ( $cnt == $pos );

$last++;
}

print $str, $/;
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 suchen / ersetzen >> nur 2. / 3. / 4. Treffer ?!?: suchen ersetzen Problem