Hallo,
hier mein Vorschlag:
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!