Perl: Zeichen Entfernen bis zu einem bestimmten Punkt.
Ich habe versucht, auf der Suche durch die Fragen schon gestellt, aber kann nicht scheinen, etwas zu finden. Ich bin mir sicher, dass seine unglaublich einfach zu tun, aber ich bin komplett neu in Perl.
Was ich versuche zu tun ist, entfernen Sie die Zeichen in einer Zeichenfolge bis zu einem bestimmten Punkt. Ich habe zum Beispiel:
Parameter1 : 0xFFFF
ist und was ich tun möchte ist, entfernen Sie die "Parameter1:" und übrig bleiben nur die "0xFFFF". Wenn jemand helfen kann, und geben eine einfache Erklärung der Operatoren verwendet, das wäre toll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt wie Sie müssen die substr Funktion.
substr
macht nur Sinn, wenn Sie wissen, wie viele die Zeichen, die Sie löschen möchten (oder zu behalten).index
kombiniert mitsubstr
könnte eine gültige Wahl ist (je nach dem erwarteten format der string natürlich).substr
könnte schneller sein in einigen Fällen, aber ich würde nicht diese Art von Mikro-Optimierung, es sei denn, ich weiß, es geht um eine signifikante Verbesserung.substr $string, length('Parameter1 :')
odersubstr $string, length('Parameter1 : ')
obwohl. Ich denke, es ist gut, um die Leute daran zu erinnern, dass es mehr an die Schweizer Armee Kettensäge als regexes.oder
Dies löscht alles, bis zu und einschließlich dem ersten vorkommen von
:
gefolgt von null oder mehr whitespace-Zeichen. Mit$s =~
angewendet$s
; ohne es, es ist angewendet, um$_
.Haben Sie sich überlegt mit so etwas wie Config::Std?
Hier ist, wie das Parsen einer Konfigurationsdatei von hand:
Mit
Config::Std
:Natürlich, im wirklichen Leben, Sie würde übergeben Sie einen Dateinamen, um die
read_config
statt es schlürfen.Ich mag split für diese parameter - /Wert-Paaren.
Beachten Sie die Verwendung von LIMIT-in den split, die Grenzen, die teilen sich auf zwei Felder (im Falle der zusätzlichen Doppelpunkte in den Wert).
Parameter1 : 0xFFFF # See Frobnicator Manual section 42.17.64
in dem Fall diesplit
Ansatz erfordert zusätzliche Arbeit.$value =~ s/#.+//;
ist ziemlich einfach.