Školení
Modul
Formátování alfanumerických dat pro prezentaci v jazyce C# - Training
Prozkoumejte základní metody v jazyce C# pro formátování alfanumerických dat.
Tento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Před touto změnou System.Globalization.StringInfo System.Globalization.TextElementEnumerator a nezpracoval správně všechny clustery grafeme. Některé grafy byly rozděleny do jejich základních součástí, místo aby byly pohromadě. StringInfo Nyní a TextElementEnumerator zpracování clusterů grapheme podle nejnovější verze Unicode Standard.
Kromě toho Microsoft.VisualBasic.Strings.StrReverse metoda, která obrátí znaky v řetězci v jazyce Visual Basic, nyní také dodržuje standard Unicode pro clustery grapheme.
Grafeme nebo rozšířený cluster grapheme je jeden uživatelem vnímaný znak, který může být tvořen několika body kódu Unicode. Například řetězec obsahující thajský znak "kam" (กำ) se skládá z následujících dvou znaků:
Při zobrazení uživateli operační systém kombinuje dva znaky, aby vytvořil jeden znak zobrazení (nebo grapheme) "kam" nebo กำ. Emoji se také může skládat z více znaků, které jsou sloučeny pro zobrazení podobným způsobem.
Tip
Dokumentace k .NET někdy používá termín "textový prvek" při odkazech na grapheme.
TextElementEnumerator Třídy StringInfo kontrolují řetězce a vrací informace o grafech, které obsahují. V rozhraní .NET Framework (všechny verze) a .NET Core 3.x a starší používají tyto dvě třídy vlastní logiku, která zpracovává některé kombinační třídy, ale plně nevyhovuje standardu Unicode. Například StringInfo třídy nesprávně TextElementEnumerator rozdělují jeden thajský znak "kam" zpět do jeho základních součástí, místo aby je udržovaly pohromadě. Tyto třídy také nesprávně rozdělují znak emoji " 🤷🏽 ♀️ " na čtyři shluky (osoba shrugging, skin tón modifikátor, pohlaví modifikátor a neviditelný kombinátor) místo toho, aby byly pohromadě jako jeden grafeme cluster.
Počínaje .NET 5 StringInfo implementují a TextElementEnumerator třídy standard Unicode definovaný standardem Unicode příloha č. 29, rev. 35, s. 3. Konkrétně teď vracejí rozšířené clustery grafeme pro všechny kombinační třídy.
Vezměte v úvahu následující kód jazyka C#:
using System.Globalization;
static void Main(string[] args)
{
PrintGraphemes("กำ");
PrintGraphemes("🤷🏽♀️");
}
static void PrintGraphemes(string str)
{
Console.WriteLine($"Printing graphemes of \"{str}\"...");
int i = 0;
TextElementEnumerator enumerator = StringInfo.GetTextElementEnumerator(str);
while (enumerator.MoveNext())
{
Console.WriteLine($"Grapheme {++i}: \"{enumerator.Current}\"");
}
Console.WriteLine($"({i} grapheme(s) total.)");
Console.WriteLine();
}
V rozhraní .NET Framework a .NET Core 3.x a starších verzích jsou grafy rozdělené a výstup konzoly je následující:
Printing graphemes of "กำ"...
Grapheme 1: "ก"
Grapheme 2: "ำ"
(2 grapheme(s) total.)
Printing graphemes of "🤷🏽♀️"...
Grapheme 1: "🤷"
Grapheme 2: "🏽"
Grapheme 3: ""
Grapheme 4: "♀️"
(4 grapheme(s) total.)
V .NET 5 a novějších verzích se grafy uchovávají společně a výstup konzoly je následující:
Printing graphemes of "กำ"...
Grapheme 1: "กำ"
(1 grapheme(s) total.)
Printing graphemes of "🤷🏽♀️"...
Grapheme 1: "🤷🏽♀️"
(1 grapheme(s) total.)
Kromě toho, počínaje v .NET 5, Microsoft.VisualBasic.Strings.StrReverse metoda, která obrátí znaky v řetězci v jazyce Visual Basic, nyní také dodržuje standard Unicode pro clustery grapheme.
Tyto změny jsou součástí širší sady vylepšení Unicode a UTF-8 v .NET, včetně rozšířeného rozhraní API výčtu clusteru grapheme, které doplňují rozhraní API pro výčet skalárních hodnot Unicode, která byla zavedena s typem System.Text.Rune v .NET Core 3.0.
.NET 5.0
Nemusíte nic dělat. Vaše aplikace se budou automaticky chovat více standardově vyhovujícím způsobem v různých scénářích souvisejících s globalizací.
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Školení
Modul
Formátování alfanumerických dat pro prezentaci v jazyce C# - Training
Prozkoumejte základní metody v jazyce C# pro formátování alfanumerických dat.