2009-05-10 4 views
17

Ich muss die letzten sieben Zeichen einer Zeichenfolge (eine Zeichenfolge, die in einem Hash gespeichert ist) abschneiden. Was ist der einfachste Weg, das in Perl zu tun? Vielen Dank im Voraus!Wie kann ich die letzten sieben Zeichen eines Hash-Wertes in Perl entfernen?

+1

$ hash {$ key} = substr ($ hash {$ key}, 0, -7); # Angenommen, es ist so in Ihrem Hash gespeichert, und Sie möchten es ersetzen. –

Antwort

36

Mit substr():

substr($string, 0, -7); 

Ich schlage vor, Sie die Perldoc Seite auf substr() lesen (was ich oben verlinkt) vor nur Kopieren und Einfügen dieser in Ihren Code. Es tut, was Sie gefragt haben, aber substr() ist eine sehr nützliche und vielseitige Funktion, und ich schlage vor, Sie verstehen alles, wofür Sie es verwenden können (indem Sie die Dokumentation lesen).

Denken Sie auch in Zukunft daran, Ihre Frage zu googeln (oder, im Fall von Perl, auf Perloc nachzuschlagen), bevor Sie sie hier fragen. Sie können großartige Ressourcen zu solchen Dingen finden, ohne dass Sie hier Fragen stellen müssen. Nicht, um deine Frage zu stellen, aber es ist ziemlich einfach, und ich denke, wenn du es versucht hast, könntest du die Antwort selbst finden.

+0

Vielen Dank! – Abdel

+4

"perldoc -q string" wäre in diesem Fall hilfreich gewesen. Die Option -q sucht in den FAQs und führt zu "Wie kann ich auf N Zeichen einer Zeichenfolge zugreifen oder sie ändern?" welches die Antwort enthält, die Abdel suchte. – user55400

6

Verwenden Sie die Perl substr Funktion, aber machen Sie das Argument "Länge" negativ. Beispiel:

#!/usr/bin/perl 

my $string = "string"; 
$short = substr($string, 0, -3); 
printf $short . "\n";

Dies wird die Zeichenfolge „str“ mit einem Newline zurückkehren, da wir die letzten drei Zeichen Kürzen festgelegt. Werfen Sie einen Blick auf die Perl documentation on substr().

10

Um die letzten 7 Zeichen zu entfernen:

substr($str, -7) = ''; 

oder etwas unelegant

substr($str, -7, length($str), ''); 

Um alle bis auf die letzten 7 Zeichen zu erhalten:

substr($str, 0, -7)