Meine Java-Kenntnisse haben bei "1.4" fast aufgehört. Um die aktuelle Situation zu ändern, werde ich sie nach und nach aktualisieren.
Derzeit läuft die App, die ich hauptsächlich im Geschäftsleben berührt habe, mit "5". Ursprünglich war es eine App, die vor "1.4" erstellt wurde, und die alte Beschreibung bleibt erhalten. Durch das Versions-Upgrade dieser App werde ich diesmal nur beschreiben, was ich über die in "6" hinzugefügten Funktionen untersucht habe.
War Java6 eine Menge Desktop-Verbesserungen? Vielleicht wird es in einer App verwendet, die ich bei der Arbeit berühre? Ich habe zwei Funktionen untersucht, die ich dachte.
Eine Unicode-Normalisierung ist jetzt möglich. Plötzlich schwierig ...
Referenz: Unicode-Normalisierung
Es gibt vier Arten der Unicode-Normalisierung:
Art | Überblick |
---|---|
NFC | Nach der Zersetzung basierend auf der kanonischen Äquivalenz wird die Resynthese basierend auf der kanonischen Äquivalenz durchgeführt |
NFD | Zerlegung basierend auf kanonischer Äquivalenz |
NFKC | Nach der Zersetzung basierend auf der Kompatibilitätsäquivalenz wird die Resynthese basierend auf der kanonischen Äquivalenz durchgeführt |
NFKD | Zerlegung basierend auf Kompatibilitätsäquivalenz |
――Was ist Synthese? Verarbeitung, die eine kombinierte Zeichenfolge in ein synthetisiertes Zeichen konvertiert
――Was ist Demontage? Verarbeitung, die synthetisierte Zeichen in kombinierte Zeichenfolgen konvertiert
--Was ist eine kombinierte Zeichenkette? Eine Zeichenfolge, die aus mehreren Zeichen besteht, jedoch durch ein einzelnes Zeichen dargestellt wird
--Was ist ein zusammengesetzter Charakter? Zeichen wie "ga", "gi", "gu" usw., die durch Kombinieren von "ka", "ki", "ku" und Trübung (") als ein Zeichen ausgedrückt werden. Referenz: [Zusammengesetzte Zeichen](https://ja.wikipedia.org/wiki/%E5%90%88%E6%88%90%E6%B8%88%E3%81%BF%E6%96%87 % E5% AD% 97)
System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFC));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFC));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFC));
System.out.println("4:Wenn-> " + Normalizer.normalize("Wenn", Normalizer.Form.NFC));
System.out.println("5:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFC));
System.out.println("6:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFC));
System.out.println("7:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFC));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFC));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFC));
System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFKC));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKC));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKC));
System.out.println("4:Wenn-> " + Normalizer.normalize("Wenn", Normalizer.Form.NFKC));
System.out.println("5:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFKC));
System.out.println("6:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFKC));
System.out.println("7:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFKC));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFKC));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFKC));
System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFD));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFD));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFD));
System.out.println("4:Wenn-> " + Normalizer.normalize("Wenn", Normalizer.Form.NFD));
System.out.println("5:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFD));
System.out.println("6:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFD));
System.out.println("7:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFD));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFD));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFD));
System.out.println("1:Ha-> " + Normalizer.normalize("Ha", Normalizer.Form.NFKD));
System.out.println("2:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKD));
System.out.println("3:Ba-> " + Normalizer.normalize("Ba", Normalizer.Form.NFKD));
System.out.println("4:Wenn-> " + Normalizer.normalize("Wenn", Normalizer.Form.NFKD));
System.out.println("5:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFKD));
System.out.println("6:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFKD));
System.out.println("7:Pa-> " + Normalizer.normalize("Pa", Normalizer.Form.NFKD));
System.out.println("8:㍉ -> " + Normalizer.normalize("㍉", Normalizer.Form.NFKD));
System.out.println("9:① -> " + Normalizer.normalize("①", Normalizer.Form.NFKD));
Als ich den obigen Code ausprobierte, NFC hat keine Konvertierung. In NFKC wird Katakana mit halber Breite in Katakana mit voller Breite konvertiert, und Sonderzeichen werden in die entsprechenden Zeichen konvertiert. NFD konvertiert kein Katakana mit halber Breite. Das schlammige Geräusch (halbtrübes Geräusch) wird in einen schlammigen Punkt (halbtrübes Punkt) und ein klares Geräusch unterteilt. Keine Konvertierung für Sonderzeichen. In NFKD wird Katakana mit halber Breite in Katakana mit voller Breite unterteilt, und schlammiger Klang (halbtrüber Ton) wird in schlammigen Punkt (halbtrüber Punkt) und klaren Klang unterteilt. Sonderzeichen werden in die entsprechenden Zeichen umgewandelt. ist geworden.
Referenz: Unicode-Normalisierung
Durch die Verwendung von "NFKC" scheint es als Methode zum Konvertieren von Kana mit halber Breite in Kana mit voller Breite verwendet werden zu können. Es scheint einige Orte zu geben, an denen man vorsichtig sein muss.
String before = "Umwandlung von Hankaku Kana in Kana in voller Breite";
String after = Normalizer.normalize(before, Normalizer.Form.NFKC);
System.out.println(before);
System.out.println(after);
http://d.hatena.ne.jp/stealthinu/20140826/p1
Es gibt kein Problem mit dem oben genannten, aber im folgenden Fall dachte ich, dass die Kreismarkierung in voller Breite (¥) so ausgegeben wird, wie sie ist. Es wurde konvertiert und ausgegeben.
String before = "Kaffeemilch ¥ 110";
String after = Normalizer.normalize(before, Normalizer.Form.NFKC);
System.out.println(before);
System.out.println(after);
Der Zeichencode lautet wie folgt.
before:ff7a ff70 ff8b ff70 725b 4e73 20 ffe5 31 31 30
after :30b3 30fc 30d2 30fc 725b 4e73 20 a5 31 31 30
Wenn Sie Kana mit halber Breite in Kana mit voller Breite konvertieren, ist es möglicherweise besser, eine Zuordnungstabelle und eine Logik zu erstellen, die übereinstimmende Zeichen konvertiert.
Sie können ein Array mit Arrays.copyOf
kopieren.
String[] before = {"Kaffee", "Milch", "110 Yen"};
String[] after = Arrays.copyOf(before, before.length);
System.out.println("before:" + Arrays.toString(before));
System.out.println("after :" + Arrays.toString(after));
before[0] = "Erdbeere";
after[2] = "150 Yen";
System.out.println("before:" + Arrays.toString(before));
System.out.println("after :" + Arrays.toString(after));
before:[Kaffee,Milch,110 Yen]
after :[Kaffee,Milch,110 Yen]
before:[Erdbeere,Milch,110 Yen]
after :[Kaffee,Milch,150 Yen]
Es ist eine tiefe Kopie. Der toString der Arrys-Klasse ist eine in "1.5" hinzugefügte Methode.
Als nächstes werde ich "7", "8" und "9" zusammen überprüfen.
Recommended Posts