Schrift
[thread]9019[/thread]

logisches string Problem



<< >> 10 Einträge, 1 Seite
RPerl
 2007-05-19 23:14
#76778 #76778
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Hallo Perl-Gurus und Perl-Freaks! :)

ich haette da mal eine Frage. Und zwar geht es um folgendes: Ich habe eine variable namens $args. Dort steht z. B. sowas drinnen:

Code: (dl )
-s -a <HERE> 


<HERE> Hab ich ersetzen lassen ueber ein Regex durch die Variable $inhalt. In $inhalt steht folgendes:

Code: (dl )
AAAAA


Das heißt in $args steht jetzt:

Code: (dl )
-s -a AAAAA


Nun würde ich die A's gerne runterzaehlen. Aber nun die große Preisfrage: Wie stelle ich das an?!
Zermartere mir hier gerade mein Hirn darueber, aber komm einfach nicht drauf. Deswegen vermtue ich, ist fuer die Loesung etwas perlisch spezifisches noetig.

Danke!

rPERL


// EDIT: Achja, mit runterzaehlen meine ich:
Code: (dl )
1
2
3
4
5
-s -a AAAAA
-s -a AAAA
-s -a AAA
-s -a AA
-s -a A
\n\n

<!--EDIT|RPerl|1179602183-->
PerlProfi
 2007-05-19 23:38
#76779 #76779
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Welche Werte kann $inhalt denn eigentlich annehmen ?
Nur ein Zeichen, das runtergezählt werden muss ?
Brauchst du jeden Schritt einzeln, oder nur das Endergebnis ?

Code: (dl )
$inhalt =~ s/(.)\1+/$1/g;

Sollte funktionieren.

MfG
betterworld
 2007-05-20 01:17
#76780 #76780
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=PerlProfi,19.05.2007, 21:38]
Code: (dl )
$inhalt =~ s/(.)\1+/$1/g;
[/quote]
Das g-Flag sollte man in diesem Fall wohl nicht benutzen, weil ja immer nur ein A zur Zeit verschwinden soll. Eventuell wuerde das sogar so gehen:
Code: (dl )
s/AA/A/;

OP sollte mal genauer beschreiben, was er will.
PerlProfi
 2007-05-20 01:33
#76781 #76781
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Hab die RegExp so gebaut, das z.B. aus 'AAAeeLLill' dieses wird: 'AeLil'.
Ich dachte das kommt der Fragestellung am nächsten.
moritz
 2007-05-20 13:27
#76782 #76782
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
also wenn in jedem Schritt ein A entfernt werden soll, geht das mit
Code: (dl )
s/(A*)A/$1/
pq
 2007-05-20 14:28
#76783 #76783
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=PerlProfi,19.05.2007, 23:33]Hab die RegExp so gebaut, das z.B. aus 'AAAeeLLill' dieses wird: 'AeLil'.[/quote]
hmm. wieso dann nicht einfach
tr/a-zA-Z//s
?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
PerlProfi
 2007-05-20 16:17
#76784 #76784
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Da bin ich nicht drauf gekommen, aber es ist ja auch nicht sehr viel kürzer als die Version mit s///. ( so wie du es geschrieben hast nur 1 Zeichen ;)
Ist tr/// denn schneller ?\n\n

<!--EDIT|PerlProfi|1179663533-->
pq
 2007-05-20 20:00
#76785 #76785
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
tr/// ist in der regel schneller als s///, kommt aber immer drauf an.
der /s modifier bei tr ist halt auch genau dafür gedacht, alles, was
mehrmals vorkommt, auf eins zu reduzieren, deswegen wollte
ich es erwähnen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
betterworld
 2007-05-21 01:46
#76786 #76786
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
[quote=pq,20.05.2007, 18:00]alles, was
mehrmals vorkommt, auf eins zu reduzieren[/quote]
In diesem Fall soll es aber nicht eins sein, sondern eins weniger.
pq
 2007-05-21 02:38
#76787 #76787
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=betterworld,20.05.2007, 23:46]In diesem Fall soll es aber nicht eins sein, sondern eins weniger.[/quote]
ich hab mich nur auf den code von PerlProfi bezogen...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 10 Einträge, 1 Seite



View all threads created 2007-05-19 23:14.