Normalisierung eines Strings/Parameters
Udo
- perl
0 Cheatah0 Peter Kaufmann0 Udo
Hallo zusammen,
ich möchten einen String normalisieren, um ihn vergleichbar zu machen.
Bsp.:
String1: a5h7i888u34t1g5
String2: h7a5u34t1g5i888
ergeben beide:
a5g5h7i888t1u34
Wie würde Ihr das effizient realisieren.
Ich dachte an ein Split und dann irgendwie sortieren.
Hinweis, falls nicht deutlich, Kriterium ist immer ein Buchstabe gefolgt von einer (auch keiner!) Zahl. Das ist ein Block.
Danke für Ideen,
Udo
Hi,
Hinweis, falls nicht deutlich,
danke, es war nämlich alles andere als deutlich (zumindest für mich).
Kriterium ist immer ein Buchstabe gefolgt von einer (auch keiner!) Zahl. Das ist ein Block.
Ermittle alle [a-z]\d? und nutze sie nach Belieben.
Cheatah
Hallo Udo,
Ich dachte an ein Split und dann irgendwie sortieren.
die Methode müsste so funktionieren:
print sort split /(?=[a-z])/, "h7a5u34t1g5i888";
Ob das wirklich von der Performance her das beste Verfahren ist, weiß ich aber nicht (immerhin benutzt das split einen regulären Ausdruck).
Grüße,
Peter
Hallo Udo,
Ich dachte an ein Split und dann irgendwie sortieren.
die Methode müsste so funktionieren:
print sort split /(?=[a-z])/, "h7a5u34t1g5i888";
Ob das wirklich von der Performance her das beste Verfahren ist, weiß ich aber nicht (immerhin benutzt das split einen regulären Ausdruck).
Danke!!!
Ich hatte gerade folgendes versucht, was funktioniert, aber wohl sicher nicht toll :-) ist!
$text = 'a5h7i888u34t1g5';
$count = 0;
print $text."\n";
while ($text)
{
$array[$count] = $text;
$array[$count] =~ s/^([a-z]\d*).*/$1/i;
$text =~ s/^($array[$count])(.*)/$2/i;
print $array[$count]."\n";
$count++;
}
$sorted = join('',sort @array);
print $sorted."\n";