Toon posts:

[Perl] Replacement suggestie???

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
Ik kom er niet uit. ik zoek een replace functie voor de volgende bewerking:
als er een dubbele characters (vier of meer) in een string zitten, wil ik deze vervangen door een driedubbele characters. Maar deze moet alle letters van het alfabet pakken en ook nummers. Hoe kan dit het beste? (gaat om een multiline string)
Groeten,
Jan

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Dit lijkt me eerlijk gezegt niet al te moeilijk. Laat je code eens zien die je hebt?

Verwijderd

Topicstarter
Die code is te uitgebreid om hier even op te zetten, maar een klein stukje moet kunnen.

sub CleanRepeats {
$_[0] =~ tr/|/ /;
$_[0] =~ s/</</;
$_[0] =~ s/>/>/;
$_[0] =~ s/\n/<BR>/g;
$_[0] =~ s/\r/<BR>/g;
$_[0] =~ s/ */ /g;
# Hier dus die wonderlijke replace functie...
#$_[0] =~ s/????/???/gs;
$CleanRepeats =$_[0];
}

  • tomato
  • Registratie: November 1999
  • Niet online
s/(.)$1{3}/$1$1$1/gs

maar dat had je zelf ook best kunnen bedenken volgens mij...

Verwijderd

Topicstarter
Of ik gebruik hem niet goed, maar deze replace doet niet wat de bedoeling is. ik bedoel dat bijv. AAAA vervangen wordt door AAA een gelijk ook AAAAAAAAAAA door AAA of BBBBBBB door BBB etc.

  • tomato
  • Registratie: November 1999
  • Niet online
Zet een komma achter de '3'.

Verwijderd

Topicstarter
s/(.)$1{'3'}/$1$1$1/gs; maakt van een enkele letter ook 3 letters en dat is ook niet de bedoeling...
Deze problemen had ik eerder ook al.

  • tomato
  • Registratie: November 1999
  • Niet online
Excuses. Arien verkeert momenteel in betere staat dan ik en stelde dan ook de volgende wijziging voor:

s/(.)\1{3,}/$1$1$1/gs


|:(

Verwijderd

Topicstarter
Ja dat is de winnende code *D
Bedankt!

  • tomato
  • Registratie: November 1999
  • Niet online
In al zijn helderheid kwam Arien ook met een '$1 x 3' icm /e met het oog op maintainability.

s/(.)\1{3,}/$1 x 3/egs
Pagina: 1