Rumah > Java > javaTutorial > Bagaimana untuk Menukar Simbol dan Huruf Aksen kepada Abjad Inggeris dengan Java?

Bagaimana untuk Menukar Simbol dan Huruf Aksen kepada Abjad Inggeris dengan Java?

Patricia Arquette
Lepaskan: 2024-11-10 06:05:03
asal
546 orang telah melayarinya

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

Menukar Simbol dan Huruf Aksen kepada Abjad Inggeris dengan Java

Masalah:

Banyak aksara dalam carta Unicode menyerupai huruf dalam abjad Inggeris tetapi mungkin mempunyai variasi atau aksen. Menukar aksara ini kepada rakan sejawat bahasa Inggeris mereka adalah satu cabaran. Contohnya, huruf "A" mempunyai lebih 20 variasi Unikod yang berbeza.

Penyelesaian:

Untuk menukar aksara ini dalam Java, ikut langkah berikut:

  1. Normalkan Rentetan: Gunakan kelas Normalizer untuk menormalkan rentetan menggunakan Borang Normal Borang terurai (NFD). Langkah ini menguraikan aksara beraksen kepada aksara asasnya dan menggabungkan diakritik.
  2. Alih Keluar Diakritik: Gunakan ungkapan biasa untuk mengalih keluar diakritik gabungan daripada rentetan ternormal. Diakritik ini ialah aksara Unikod yang mengubah suai sebutan atau penampilan aksara asas.
  3. Ganti Aksara Serupa: Buat pemetaan antara aksara Unikod dan rakan abjad Inggerisnya. Gantikan aksara rentetan yang dinormalkan dengan persamaan yang dipetakan.

Berikut ialah pelaksanaan Java bagi algoritma:

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();
    }
}
Salin selepas log masuk

Contoh Penggunaan:

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

Atas ialah kandungan terperinci Bagaimana untuk Menukar Simbol dan Huruf Aksen kepada Abjad Inggeris dengan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan