Thread Letztes Zeichen aus einem Skalar löschen: Wieviele Methoden mag es dafür geben? (21 answers)
Opened by Crian at 2004-08-20 11:38

Crian
 2004-08-20 11:38
#49429 #49429
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Gegeben sei eine Zeichenkette der Form

my $text = "xyz123";

Welche verschiedenen Möglichkeiten gibt es, das letzte Zeichen
zu entfernen? Was mir so einfällt:

1) chop $text;

2) $text = join '', (split //, $text)[0..length($text)-2];

3) $text = substr $text, 0, length($text)-1;

4) $text = join '', splice(@{[split //, $text]}, 0, length($text)-1);

5) $text =~ s/.$//;

Genau dann wenn das letzte Zeichen ein Zeilenumbruch ist, kann man als
zusätzliche Variante auch chomp nehmen, aber das zähle ich mal nicht mit.

Das ideomatischste dürfte wohl Variante 1 - chop - sein. Die Idee zu
dieser Frage kam mir, als ich mir die Frage nach der ideomatischsten
Möglichkeit genau dies in einer anderen Programmiersprache (SAS) zu
tun stellte (da fällt mir nur eine substr-Entsprechung ein).

Hier mal mein Testcode:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/perl
use strict;
use warnings;

my $text = "xyz123";
print "0) '$text'\n";

chop(my $text1 = $text);
print "1) '$text1'\n";

my $text2 = join '', (split //, $text)[0..length($text)-2];
print "2) '$text2'\n";

my $text3 = substr $text, 0, length($text)-1;
print "3) '$text3'\n";

my $text4 = join '', splice(@{[split //, $text]}, 0, length($text)-1);
print "4) '$text4'\n";

(my $text5 = $text) =~ s/.$//;
print "5) '$text5'\n";


mit der Ausgabe

Code: (dl )
1
2
3
4
5
6
0) 'xyz123'
1) 'xyz12'
2) 'xyz12'
3) 'xyz12'
4) 'xyz12'
5) 'xyz12'


Fallen Euch noch mehr Möglichkeiten ein?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite

View full thread Letztes Zeichen aus einem Skalar löschen: Wieviele Methoden mag es dafür geben?