Wie die Unicode-Liste mit den 65.536(?) Zeichen im Java-Programm verwenden?
Ich weiß weder, wie viele Zeichen als Unicode verstanden werden, aber es sollen wohl um die 65.000 sein. Diese Liste möchte ich verwenden, um sie in IntelliJ zu verwenden oder gibt es da eine fertige Bibliothek?
Mein Vorhaben wäre wie folgt:
Mit z. B.
case '\u00B6' -> altNumpad(robot, "20");
würde ich in einer Methode dieses Unicode-Zeichen schreiben lassen.
Nun möchte ich aber, dass dieses Programm alle Unicode-Zeichen unterstützt, denn normal über Robot robot = new Robot(); geht das nur mit sehr wenigen Zeichen.
Oder gibt es eine einfachere Lösung, alle Unicode-Zeichen von dem Programm automatisch schreiben zu lassen? 65.000+ Zeilen Code wären auch nicht sehr übersichtlich ...
2 Antworten
Ich verstehe nicht welche Liste du brauchst? Unicode ist einfach eine große Menge von Zahlen, und jede Zahl steht für ein Zeichen (oder einen Teil eines Zeichens). Unicode definiert einfach diese Zuordnung.
Wenn du eine Regel hast um aus einem Unicode-Codepoint eine Aktion durchzuführen, dann schreib dir doch eine Funktion dafür? Ein Wert rein, ein Wert raus...
In Java wird Unicode völlig transparent und vollständig unterstützt, du musst dich eigentlich um gar nichts kümmern. Nur wenn du mit anderen Dingen kommunizierst musst du vlt. aufpassen wie du die Unicode-Codepoints als Bytes darstellst (dafür gibt es UTF-8 oder weniger häufig verwendete Encodings wie UTF-16 etc.)
(int) zeichen
So kannst du einen char in ein int umwandeln.
Also:
altNumpad(robot, "" + ((int) zeichen))
Geht tatsächlich auch andersrum.
Wenn du einen Hex-String brauchst:
Integer.toHexString(val);
Dann benutze eine Schleife.Mit einer Schleife kann man einen Code mehrmals ausführen, mit sich verändernden Variablen. Du findest dafür online Tutorials. In deinem Fall geht es so:
for (char c = 0; c <= Character.MAX_VALUE; c++) {
altNumpad(robot, "" + ((int) zeichen));
}
Ach so, du meinst also, dass ich mir die selber generieren soll?
Der Code in der for-Schleife wird für jedes Zeichen, dass durch die Variable c repräsentiert wird, ausgeführt. So kannst du also für jedes Zeichen etwas machen.
Das ist schon mal ein cooler Ansatz, aber der schreibt mir ganz wierde Sachen.
altNumpad(autoTextRobot, "" + ((int) characterKey));
Ich brauche meines Erachtens nur diesen Teil.
Input: "ا"ختبار auf Deutsch "Test". Ich spreche kein Arabisch, aber ich wollte es damit testen.
Output: '.*('
Auch so was wie "ö" kann der nicht richtig schreiben.
Man kann dann hierdrauf aufbauen. Man kann von 0 bis 65.535 (durch eine for-loop) durchzählen und dann jeweils ((char)wert) -> altNumpad(robot, String.valueOf(wert));
ausführen.
Ich empfehle auch wenn möglich noch UTF-8 encoding zu nutzen, wenn du den int in einen char umwandelst.
Hoffe ich konnte helfen,
Grüße
Java supportet nur Zeichen bis 2 Byte, also 65000, einige Zeichen bestehen in Strings daher aus mehreren Characters.
Für Umlaute musst du den Unicode angeben.
Aber ich möchte nicht alle 65.000+ Zeichen einzeln eintragen müssen ...