Perl, benutze die tr-Funktion, um gleichzeitig Großbuchstaben in Kleinbuchstaben und umgekehrt umzuwandeln?

7

Ich habe eine Zeichenfolge

%Vor%

und ich möchte die tr-Funktion verwenden, um alle Großbuchstaben in Kleinbuchstaben und alle Kleinbuchstaben in Großbuchstaben umzuwandeln .... zur gleichen Zeit. Ich möchte es im Grunde nur umkehren, um zu werden.

%Vor%

Ich habe diese Zeile gefunden, aber ich bin mir nicht sicher, wie ich sie modifizieren soll, um das zu machen, was ich will. Irgendwelche Hilfe bitte?

%Vor%

Danke!

    
Brian 09.04.2011, 21:31
quelle

3 Antworten

10

$string =~ tr/A-Za-z/a-zA-Z/;

    
friedo 09.04.2011, 21:33
quelle
11

Auf Toms Anfrage die Unicode-clean (oder locales-clean) Version:

%Vor%     
hobbs 09.04.2011 21:39
quelle
7

Sie können die vollständige Unicode-Lösung auf diese Weise verwenden:

%Vor%

oder auf diese Weise

%Vor%

Je nachdem, was Sie mit etwas tun möchten, das Groß- und Kleinschreibung in beiden Richtungen ändert, wie Dz, dessen Großbuchstabe DZ ist und dessen Kleinbuchstabe dz ist.

Wenn Sie die zweite dieser beiden Ersetzungen über diese Eingabe ausführen:

%Vor%

es erzeugt diese Ergebnisse:

%Vor%

Der einzige Teil, der in dieser Menge anders wäre, wenn man die erste Funktion verwendet, wäre, dass die dz-Sequenz dann stattdessen so aussehen würde:

%Vor%

Der Grund, warum Sie nicht nur einen oberen oder unteren Test verwenden möchten, ist, dass Sie dann unnötige Arbeit verrichten, da es viele verkapselte Codepunkte gibt, deren Groß- und Kleinschreibung nicht geändert wird. All dies sind zum Beispiel verdeckte Codepunkte, die sich aber weder im Groß- noch im Kleinbuchstaben ändern:

%Vor%

Sie würden also feststellen, dass es sich um Groß- oder Kleinbuchstaben handelt. Rufen Sie dann die Funktion "Inverse Mapping" auf und stellen Sie fest, dass sich nichts geändert hat. Ich denke, warum stören?

    
tchrist 09.04.2011 22:32
quelle

Tags und Links