Heim  >  Artikel  >  Java  >  Wie konvertiert man mit Java Symbole und Akzentbuchstaben in das englische Alphabet?

Wie konvertiert man mit Java Symbole und Akzentbuchstaben in das englische Alphabet?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-10 06:05:03544Durchsuche

How to Convert Symbols and Accent Letters to the English Alphabet with Java?

Symbole und Akzentbuchstaben mit Java in das englische Alphabet konvertieren

Problem:

Viele Zeichen im Unicode-Diagramm ähneln Buchstaben im englischen Alphabet, können jedoch Variationen oder Akzente aufweisen. Die Umwandlung dieser Zeichen in ihre englischen Gegenstücke ist eine Herausforderung. Beispielsweise gibt es für den Buchstaben „A“ über 20 verschiedene Unicode-Varianten.

Lösung:

Um diese Zeichen in Java zu konvertieren, befolgen Sie diese Schritte:

  1. Normalisieren Sie die Zeichenfolge: Verwenden Sie die Normalizer-Klasse, um die Zeichenfolge mithilfe der NFD-Form (Normal Form Decomposed) zu normalisieren. Dieser Schritt zerlegt akzentuierte Zeichen in ihr Grundzeichen und die kombinierenden diakritischen Zeichen.
  2. Diakritische Zeichen entfernen: Verwenden Sie einen regulären Ausdruck, um die kombinierenden diakritischen Zeichen aus der normalisierten Zeichenfolge zu entfernen. Bei diesen diakritischen Zeichen handelt es sich um Unicode-Zeichen, die die Aussprache oder das Aussehen des Basiszeichens ändern.
  3. Ähnliche Zeichen ersetzen: Erstellen Sie eine Zuordnung zwischen den Unicode-Zeichen und ihren Gegenstücken im englischen Alphabet. Ersetzen Sie die Zeichen der normalisierten Zeichenfolge durch ihre zugeordneten Entsprechungen.

Hier ist eine Java-Implementierung des Algorithmus:

import java.text.Normalizer;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

public class UnicodeToEnglishConverter {

    private static final Map<String, String> unicodeToEnglishMap = new HashMap<>();

    static {
        // Initialize the mapping
        unicodeToEnglishMap.put("ҥ", "H");
        unicodeToEnglishMap.put("Ѷ", "V");
        unicodeToEnglishMap.put("Ȳ", "Y");
        unicodeToEnglishMap.put("Ǭ", "O");
        unicodeToEnglishMap.put("Ƈ", "C");
    }

    public static String convert(String unicodeString) {
        // Normalize the string in NFD form
        String nfdNormalizedString = Normalizer.normalize(unicodeString, Normalizer.Form.NFD);
        
        // Remove diacritics
        Pattern pattern = Pattern.compile("\p{InCombiningDiacriticalMarks}+");
        String deaccentedString = pattern.matcher(nfdNormalizedString).replaceAll("");
        
        // Replace similar characters with English equivalents
        StringBuilder englishString = new StringBuilder();
        for (char c : deaccentedString.toCharArray()) {
            englishString.append(unicodeToEnglishMap.getOrDefault(String.valueOf(c), String.valueOf(c)));
        }
        
        return englishString.toString();
    }
}

Beispielverwendung:

String unicodeString = "tђє Ŧค๓เℓy";
String englishString = UnicodeToEnglishConverter.convert(unicodeString);
System.out.println(englishString); // Output: the Family

Das obige ist der detaillierte Inhalt vonWie konvertiert man mit Java Symbole und Akzentbuchstaben in das englische Alphabet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn