Heim Backend-Entwicklung C#.Net-Tutorial C# Konvertieren chinesischer Zeichen in Pinyin (unterstützt multiphonetische Zeichen)

C# Konvertieren chinesischer Zeichen in Pinyin (unterstützt multiphonetische Zeichen)

Feb 06, 2017 pm 04:46 PM

Aufgrund der Projektanforderungen brauchte ich eine Funktion zum Konvertieren chinesischer Zeichen in Pinyin und die erste Rechtschreibung für Abfragen. Ich hatte das Gefühl, dass diese Funktion im Grunde ausgereift ist, also suchte ich nach relevanten Codes Folgende zwei Artikel

C# Konvertieren chinesischer Zeichen in Pinyin (Unterstützt alle chinesischen Zeichen im GB2312-Zeichensatz) (http://www.cnblogs.com/cxd4321/p/4203383.html)

【Waren】JS-Version chinesischer Schriftzeichen und Pinyin Die ultimative Lösung für die gegenseitige Konvertierung mit einer einfachen JS-Pinyin-Eingabemethode (http://www.cnblogs.com/liuxianan/p/pinyinjs.html)

Vielen Dank an die beiden Blogger für ihre umfassenden und detaillierten Texte. Alle stellen den Quellcode zur Verfügung, auf den Sie verweisen können.

Aufgrund der Anforderungen der Schnittstelle habe ich auf den ersten Artikel verwiesen, der im Wesentlichen die Anforderungen der Konvertierung chinesischer Zeichen in Pinyin erfüllen kann. Für andere Sonderzeichen können Sie auch hinzufügen Eventuelle Mängel. Es unterstützt einfach keine multiphonetischen Zeichen. Da wir Abfragen mit mehreren phonetischen Zeichen unterstützen müssen, habe ich später andere Artikel überprüft und festgestellt, dass es keine vorgefertigten Artikel gibt (vielleicht sind meine Suchfähigkeiten schlecht).

Später habe ich gesucht und festgestellt, dass Microsoft für die Konvertierung chinesischer Schriftzeichen in Pinyin das Microsoft Visual Studio International Pack bereitgestellt hat, und es ist sehr leistungsfähig. Also habe ich es versucht

Referenzieren Sie zuerst das entsprechende Paket in Nuget

und suchen Sie nach PinYinConverter

C# Konvertieren chinesischer Zeichen in Pinyin (unterstützt multiphonetische Zeichen)

Einfache Demo

Klein Probieren Sie es aus, es ist sehr einfach zu verwenden, verwenden Sie einfach die ChineseChar-Klasse direkt als Ersatz

string ch = Console.ReadLine();
ChineseChar cc = new ChineseChar(ch[0]);
var pinyins = cc.Pinyins.ToList();
pinyins.ForEach(Console.WriteLine);
Nach dem Login kopieren

Die Ergebnisse sind wie folgt:

C# Konvertieren chinesischer Zeichen in Pinyin (unterstützt multiphonetische Zeichen)

Wir können sehen, dass es drei polyphone Zeichen für 行 gibt: Hang, Heng und Xing. Sogar die phonetischen Symbole werden hier angezeigt, was wirklich praktisch ist. Die Funktion, die ich brauche, besteht darin, „Bank“ einzugeben und sie dann in Pinyin als „Yinhang, Yinheng, Yinxing“ umzuwandeln, und das erste Pinyin ist „yh, yx“. Mit der ChineseChar-Klasse ist die Idee einfach.

Chinesisches Zeichen in Pinyin-Paket

1. Teilen Sie zuerst die eingegebenen chinesischen Zeichen auf

2. Verwenden Sie dann ChineseChar, um mehrere Pinyin für jedes chinesische Zeichen zu erhalten

3. Entfernen Sie dann die Zahlen, entfernen Sie Duplikate, extrahieren Sie das erste Zeichen und kombinieren Sie sie dann

Also habe ich eine Hilfsklasse zum Ersetzen geschrieben, der Code lautet wie folgt:

public class PinYinConverterHelp
    {
        public static PingYinModel GetTotalPingYin(string str)
        {
            var chs = str.ToCharArray();
            //记录每个汉字的全拼
            Dictionary<int, List<string>> totalPingYins = new Dictionary<int, List<string>>();
            for (int i = 0; i < chs.Length; i++)
            {
                var pinyins = new List<string>();
                var ch = chs[i];
                //是否是有效的汉字
                if (ChineseChar.IsValidChar(ch))
                {
                    ChineseChar cc = new ChineseChar(ch);
                    pinyins = cc.Pinyins.Where(p => !string.IsNullOrWhiteSpace(p)).ToList();
                }
                else
                {
                    pinyins.Add(ch.ToString());
                }
                //去除声调,转小写
                pinyins = pinyins.ConvertAll(p => Regex.Replace(p, @"\d", "").ToLower());
                //去重
                pinyins = pinyins.Where(p => !string.IsNullOrWhiteSpace(p)).Distinct().ToList();
                if (pinyins.Any())
                {
                    totalPingYins[i] = pinyins;
                }
            }
            PingYinModel result = new PingYinModel();
            foreach (var pinyins in totalPingYins)
            {
                var items = pinyins.Value;
                if (result.TotalPingYin.Count <= 0)
                {
                    result.TotalPingYin = items;
                    result.FirstPingYin = items.ConvertAll(p => p.Substring(0, 1)).Distinct().ToList();
                }
                else
                {
                    //全拼循环匹配
                    var newTotalPingYins = new List<string>();
                    foreach (var totalPingYin in result.TotalPingYin)
                    {
                        newTotalPingYins.AddRange(items.Select(item => totalPingYin + item));
                    }
                    newTotalPingYins = newTotalPingYins.Distinct().ToList();
                    result.TotalPingYin = newTotalPingYins;

                    //首字母循环匹配
                    var newFirstPingYins = new List<string>();
                    foreach (var firstPingYin in result.FirstPingYin)
                    {
                        newFirstPingYins.AddRange(items.Select(item => firstPingYin + item.Substring(0, 1)));
                    }
                    newFirstPingYins = newFirstPingYins.Distinct().ToList();
                    result.FirstPingYin = newFirstPingYins;
                }
            }
            return result;
        }
    }
Nach dem Login kopieren

Ergebnis :

C# Konvertieren chinesischer Zeichen in Pinyin (unterstützt multiphonetische Zeichen)

Ich habe bisher einige seltene Zeichen ausprobiert und sie werden alle unterstützt, aber einige, die für die Konvertierung in allgemeine chinesische Zeichen zu voreingenommen sind, habe ich nicht ausprobiert Pinyin, polyphone Zeichen werden hier unterstützt. Das reicht.


Hier verwenden wir nur die chinesische Zeichen-zu-Pinyin-Funktion im Microsoft Visual Studio International Pack-Erweiterungspaket. Tatsächlich gibt es auch Sprachpakete für Chinesisch, Japanisch, Koreanisch. Englisch und andere Länder und bietet Methoden zur Realisierung leistungsstarker Funktionen wie gegenseitige Übertragung, Erfassung, Wortzählung und sogar Strichzählung. Interessierte Freunde können die API selbst überprüfen.


Quellcode-Teilen


Teilen ist eine Tugend, manchmal können tolle Artikel unser technisches Niveau verbessern, manchmal aber auch mehr Die Anforderungen liegen auf Unternehmensebene, und die gemeinsame Nutzung vieler kleiner Wissensanwendungen kann uns dabei helfen, Probleme auf Unternehmensebene zu verbessern. Solange die geteilten Wissenspunkte nützlich sind und andere nicht in die Irre führen, egal wie groß oder klein sie sind, ist es eine Art Lernen, also hoffe ich, dass jeder mutig genug ist, es zu teilen.

Adresse: https://github.com/qq1206676756/PinYinParse

Das Obige ist der Inhalt der Konvertierung chinesischer C#-Zeichen in Pinyin (unterstützt multiphonetische Zeichen). Bitte beachten Sie die chinesische PHP-Website (www.php.cn)!


Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Active Directory mit C# Active Directory mit C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Active Directory mit C#. Hier besprechen wir die Einführung und die Funktionsweise von Active Directory in C# sowie die Syntax und das Beispiel.

Zufallszahlengenerator in C# Zufallszahlengenerator in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zum Zufallszahlengenerator in C#. Hier besprechen wir die Funktionsweise des Zufallszahlengenerators, das Konzept von Pseudozufallszahlen und sicheren Zahlen.

Zugriffsmodifikatoren in C# Zugriffsmodifikatoren in C# Sep 03, 2024 pm 03:24 PM

Leitfaden zu den Zugriffsmodifikatoren in C#. Wir haben die Einführungstypen von Zugriffsmodifikatoren in C# zusammen mit Beispielen und Ausgaben besprochen.

C#-Datenrasteransicht C#-Datenrasteransicht Sep 03, 2024 pm 03:32 PM

Leitfaden zur C#-Datenrasteransicht. Hier diskutieren wir die Beispiele, wie eine Datenrasteransicht aus der SQL-Datenbank oder einer Excel-Datei geladen und exportiert werden kann.

C#-Serialisierung C#-Serialisierung Sep 03, 2024 pm 03:30 PM

Leitfaden zur C#-Serialisierung. Hier besprechen wir die Einführung, die Schritte des C#-Serialisierungsobjekts, die Funktionsweise bzw. das Beispiel.

Muster in C# Muster in C# Sep 03, 2024 pm 03:33 PM

Leitfaden zu Mustern in C#. Hier besprechen wir die Einführung und die drei wichtigsten Arten von Mustern in C# zusammen mit ihren Beispielen und der Code-Implementierung.

Primzahlen in C# Primzahlen in C# Sep 03, 2024 pm 03:35 PM

Leitfaden zu Primzahlen in C#. Hier besprechen wir die Einführung und Beispiele von Primzahlen in C# sowie die Codeimplementierung.

Fakultät in C# Fakultät in C# Sep 03, 2024 pm 03:34 PM

Leitfaden zur Fakultät in C#. Hier diskutieren wir die Einführung in die Fakultät in C# zusammen mit verschiedenen Beispielen und Code-Implementierungen.

See all articles