Informationen zur Konvertierung von Zeichenfolgen in Java in voller Breite und halber Breite

Hintergrund

In der Wirtschaft wurde es notwendig, die Konvertierung von Zeichenketten in voller Breite → halber Breite oder halber Breite → voller Breite zu implementieren. Ein Memo des Untersuchungsergebnisses. Es wird verwendet, um Notationsschwankungen während der Vergleichsverarbeitung zu absorbieren.

Bedarf

--Umwandlungsziel: alphanumerische Zeichen, Symbole

Methode

Normalizer Methode 1. Verwendung von "java.text.Normalizer", das in Java 6 oder höher verfügbar ist. Da dies nicht für die Konvertierung mit voller Breite und halber Breite vorgesehen ist, kann während des Normalisierungsprozesses eine zusätzliche Konvertierung auftreten.

ICU4J ICU - International Components for Unicode Methode 2. Verwenden Sie eine externe Bibliothek. Verwenden Sie zum Zeitpunkt des Schreibens die neueste Version, ICU 4J 63.1.

Quelle

Transliterator fullToHalf = Transliterator.getInstance("Fullwidth-Halfwidth");
Transliterator halftoFull = Transliterator.getInstance("Halfwidth-Fullwidth");
String target =
    "Alle Hälfte ""\" \"Agapa Agapa ABabABab123123 ()()[][];;!!??##//--㌀ ┣ ① ⑪ ㌀ Co., Ltd. ㌔¼ ⑴";
System.out.println("target :" + target);
System.out.println("NFC    :" + Normalizer.normalize(target, Normalizer.Form.NFC));
System.out.println("NFD    :" + Normalizer.normalize(target, Normalizer.Form.NFD));
System.out.println("NFKC   :" + Normalizer.normalize(target, Normalizer.Form.NFKC));
System.out.println("NFKD   :" + Normalizer.normalize(target, Normalizer.Form.NFKD));
System.out.println("ICU4J H:" + fullToHalf.transliterate(target));
System.out.println("ICU4J F:" + halftoFull.transliterate(target));

Ausführungsergebnis

target :Alle Hälfte """ "Agapa Agapa ABabABab123123 ()()[][];;!!??##//--㌀ ┣ ① ⑪ ㌀ Co., Ltd. ㌔¼ ⑴
NFC    :Alle Hälfte """ "Agapa Agapa ABabABab123123 ()()[][];;!!??##//--㌀ ┣ ① ⑪ ㌀ Co., Ltd. ㌔¼ ⑴
NFD    :Alle Hälfte """ "Agapa Agapa ABabABab123123 ()()[][];;!!??##//--㌀ ┣ ① ⑪ ㌀ Co., Ltd. ㌔¼ ⑴
NFKC   :Alle Hälfte """ "Agapa Agapa Agapa ABabABab123123()()[][];;!!??##//--・ ┣111 Wohnung(Lager)Km 1⁄4(1)
NFKD   :Alle Hälfte """ "Agapa Agapa Agapa ABabABab123123()()[][];;!!??##//--・ ┣111 Wohnung(Lager)Km 1⁄4(1)
ICU4J H:Alle Hälfte """ "Agapa Agapa ABabABab123123()()[][];;!!??##//--㌀ ┣ ① ⑪ ㌀ Co., Ltd. ㌔¼ ⑴
ICU4J F:Alle Hälfte Agapa Agapa Agapa ABabABab123123 () () [] [] ;;! !! ?? ?? ## //, ・ ┣ ① ① ㌀ Co., Ltd. ㌔¼ ⑴

Fazit

Dieses Mal habe ich mich für ICU4J entschieden, um von voller Breite zu halber Breite zu konvertieren. Wenn Sie die Eingabe im Voraus eingrenzen können, ist der Normalizer meiner Meinung nach einfacher und besser.

Verweise

Recommended Posts

Informationen zur Konvertierung von Zeichenfolgen in Java in voller Breite und halber Breite
Konvertierung in voller Breite → halbe Breite mit Java-Zeichenfolge (Kana in voller Breite → Kana in halber Breite)
[java] Zusammenfassung des Umgangs mit Zeichenketten
Über die Idee anonymer Klassen in Java
[Java] Umgang mit Zeichenketten (String-Klasse und StringBuilder-Klasse)
Grundlagen der Zeichenoperation (Java)
Über Java Abstract Class
Java-Implementierung von Tri-Tree
[Java] Vergleichsmethode für Zeichenketten und Vergleichsmethode mit regulären Ausdrücken
[Einführung in Java] Umgang mit Zeichenfolgen (String-Klasse, StringBuilder-Klasse)
Errate den Zeichencode in Java
Über Biocontainer fastqc und Java
Über Lambda, Stream, LocalDate von Java8
[Java] Entfernen Sie Leerzeichen in Zeichenfolgen
Liste der in Java 9 hinzugefügten Mitglieder
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
Verketten Sie Zeichenfolgen, die von Mehrobjektmethoden in Java Stream zurückgegeben werden
Informationen zur Dateikopierverarbeitung in Java
[Algorithmus] Absteigende Reihenfolge der Zeichenketten
Liste der in Java 9 hinzugefügten Typen
Implementierung einer ähnlichen Funktion in Java
So verketten Sie Zeichenfolgen mit Java
Informationen zum Zurückgeben einer Referenz in einem Java Getter
Implementierung von DBlayer in Java (RDB, MySQL)
Holen Sie sich das Ergebnis von POST in Java
[Leicht verständliche Erklärung! ] Konvertierung des Referenztyptyps in Java
OCR in Java (Zeichenerkennung aus Bildern)
[Erstellen] Ein Memorandum über das Codieren in Java
So führen Sie eine Basiskonvertierung in Java durch
Informationen zu Datensätzen, die zur Vorschau in Java JDK 14 hinzugefügt wurden
Unveränderlich (unveränderlich) Listet die Objektkonvertierungsfunktion in Java8 auf
Fortsetzung Sprechen Sie über das Schreiben von Java mit Emacs @ 2018
[Java] Vorsichtsmaßnahmen beim Vergleichen von Zeichenfolgen mit Zeichenfolgen
Die Geschichte des Schreibens von Java in Emacs
Rolle von JSP in Webanwendungen [Java]
Diskriminierung von Enum in Java 7 und höher
Die Geschichte des einfachen String-Vergleichs in Java
[Java] Behandlung von Java Beans in der Methodenkette
[Einführung in Java] Informationen zur Typkonvertierung (Besetzung, Promotion)
Informationen zur Beschreibungsreihenfolge der Java-Systemeigenschaften
Eine Geschichte über das JDK in der Java 11-Ära
Versuchen Sie, etwa 30 Zeilen in Java zu kratzen (CSV-Ausgabe)
Die Geschichte des Lernens von Java in der ersten Programmierung
Messen Sie die Größe eines Ordners mit Java
Informationen zu in Java verwendeten Variablen (lokaler Variablentyp)
[Java] Verwendung von final in der lokalen Variablendeklaration
Spüren Sie den Lauf der Zeit auch in Java
Berechnen Sie die Ähnlichkeitsbewertung von Zeichenketten mit JAVA
Ein kurzer Überblick über Java, das im Unterricht gelernt wurde
Methodenname der Methodenkette in Java Builder + α
Importieren Sie Dateien derselben Hierarchie in Java