JavaScriptsVerschiedenes

Caps Lock Text korrigieren

Dreht Groß- und Kleinschreibung eines versehentlich mit Feststelltaste getippten Textes wieder um.

Wer kennt das nicht: Man schaut beim Tippen öfter auf die Tastatur als auf den Bildschirm — und erst beim Blick nach oben fällt auf, dass die Feststelltaste aktiv war. Der ganze Absatz steht verkehrt herum da: Große Buchstaben sind klein, kleine sind groß. Statt alles neu zu tippen, kippt dieses Script von unserem User Valentin Hammer die Schreibweise einfach zurück.

Die Bedienung ist schnell erklärt: Fügt euren verunglückten Text in das obere Feld ein und klickt auf „Text korrigieren" — im unteren Feld steht danach die berichtigte Fassung zum Herauskopieren. Mit „Eingabe löschen" und „Ausgabe löschen" leert ihr die beiden Felder einzeln. Ein Beispielsatz ist bereits vorbelegt, ihr könnt also sofort ausprobieren, was passiert.

Das Script kippt aber nicht nur Buchstaben. Auf deutschen Tastaturen wirkt die Feststelltaste traditionell wie eine dauerhaft gedrückte Umschalttaste und betrifft damit auch die Zahlenreihe: Aus der 1 wird ein Ausrufezeichen, aus der 7 ein Schrägstrich, aus dem Punkt ein Doppelpunkt. Deshalb tauscht das Script zusätzlich fünfzehn solcher Tastenpaare zurück — ! 1, " 2, § 3 und so weiter bis zu ' #. Auf einer amerikanischen Tastatur liegen andere Zeichen auf denselben Tasten; wer damit arbeitet, passt die Liste im Script an (siehe Erklärung weiter unten).

Ein Hinweis zur Grenze des Verfahrens: Das Script kehrt die Schreibweise jedes einzelnen Zeichens um, es kann aber nicht wissen, wo im Original wirklich ein Großbuchstabe stand. Aus dIESER tEXT wird korrekt Dieser Text — ein durchgehend groß geschriebener Text wird dagegen komplett klein und muss von Hand nachgearbeitet werden.

Wenn ihr Text absichtlich komplett in eine Richtung bringen wollt, hilft euch das Script Kleinschreibung / Großschreibung. Welches Zeichen hinter welchem Code steckt, zeigt die Zeichentabelle, und welche Taste welchen Code sendet, verrät Tastencodes anzeigen.

Verschiedenes Baujahr 2008 läuft in deinem Browser
Eingesandt von Valentin Hammer

So funktioniert das Script

Das Script hat vier Bestandteile: eine Tabelle mit den Tastenpaaren, eine Funktion, die ein einzelnes Zeichen umdreht, eine Schleife, die den ganzen Text Zeichen für Zeichen durchgeht, und die Anmeldung der drei Knöpfe. Alles steckt in einer sofort ausgeführten Funktion, damit die Namen nicht mit anderen Scripts auf der Seite kollidieren. Das Original löste dieselbe Aufgabe mit rund dreißig hintereinandergeschriebenen if-Abfragen — die Rechnung dahinter ist unverändert, nur übersichtlicher notiert.

const tastenpaare = {
  "!": "1", "1": "!",
  '"': "2", "2": '"',
  "§": "3", "3": "§",
  "&": "6", "6": "&",
  …
};

Das ist ein Objekt, hier als Nachschlagetabelle benutzt: links das gefundene Zeichen, rechts das Zeichen, das stattdessen erscheinen soll. Jedes Paar steht zweimal drin — einmal in jeder Richtung —, denn das Script soll ja in beide Richtungen tauschen können. Beim Anführungszeichen fällt auf, dass die Zeile in einfachen Hochkommas steht: '"'. Das ist nötig, weil ein doppeltes Anführungszeichen sonst den Text vorzeitig beenden würde. Umgekehrt steht das Hochkomma-Paar in doppelten Anführungszeichen.

if (Object.prototype.hasOwnProperty.call(tastenpaare, zeichen)) {
  return tastenpaare[zeichen];
}

Hier wird zuerst geprüft, ob das aktuelle Zeichen überhaupt in der Tabelle steht. hasOwnProperty heißt „hat eine eigene Eigenschaft" und antwortet mit true oder false. Trifft es zu, liefert tastenpaare[zeichen] den Partner aus der Tabelle, und return beendet die Funktion sofort — die folgenden Zeilen laufen dann gar nicht mehr.

if (zeichen === zeichen.toUpperCase()) {
  return zeichen.toLowerCase();
}
return zeichen.toUpperCase();

Für alle übrigen Zeichen entscheidet ein einfacher Trick über die Richtung: Ist das Zeichen bereits identisch mit seiner Großbuchstaben-Fassung, war es groß — also wird es klein gemacht. Andernfalls war es klein und wird groß. Das Gleichheitszeichen steht hier dreifach (===): Dieser strikte Vergleich prüft Wert und Typ und ist die empfohlene Schreibweise. Zeichen ohne Groß- und Kleinschreibung, etwa das Leerzeichen, überstehen die Prüfung unverändert — ihre große und ihre kleine Form sind dieselbe.

for (let i = 0; i < text.length; i++) {
  ergebnis += zeichenTauschen(text.charAt(i));
}

Die Schleife zählt i von 0 bis zum letzten Zeichen hoch. text.charAt(i) holt das Zeichen an dieser Stelle — gezählt wird ab 0, das erste Zeichen hat also die Nummer 0. Jedes umgedrehte Zeichen wird mit += hinten an ergebnis angehängt, sodass nach dem letzten Durchlauf der fertige Text zusammengesetzt ist. Erst danach landet er mit ausgabe.value = ergebnis im unteren Feld.

document.getElementById("cl-korrigieren").addEventListener("click", textKorrigieren);
document.getElementById("cl-eingabe-leeren").addEventListener("click", function () {
  eingabe.value = "";
});

Zum Schluss werden die drei Knöpfe mit ihren Aufgaben verbunden. Der erste bekommt die fertige Funktion textKorrigieren mitgegeben, die beiden Löschknöpfe eine namenlose Funktion, die nur eine einzige Zeile enthält — für solche Kleinigkeiten lohnt kein eigener Name. Das Script steht dafür unter dem Formular, damit Felder und Knöpfe schon existieren, wenn es ausgeführt wird.

Zum Anpassen: Die Tastenpaare oben sind die interessanteste Stelle. Wer auf einer amerikanischen Tastatur schreibt, ersetzt sie durch die dortigen Paare (@ 2, # für die 3 und so weiter); wer nur Buchstaben umdrehen möchte, leert die Tabelle einfach auf {} — dann bleiben Ziffern und Satzzeichen unangetastet.

Script für die eigene Homepage

Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.

Mehr aus der Kategorie Verschiedenes