Rune Struktura

Definice

Představuje skalární hodnotu Unicode ([ U+0000..U+D7FF ], inclusive; nebo [ U+E000.. U+10FFFF ], včetně).

public value class Rune : IComparable, IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>, ISpanFormattable, IUtf8SpanFormattable, IUtf8SpanParsable<System::Text::Rune>
public value class Rune : IComparable, IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>
public value class Rune : IComparable, IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>, ISpanFormattable
public value class Rune : IComparable, IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>, ISpanFormattable, IUtf8SpanFormattable
public value class Rune : IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>
public readonly struct Rune : IComparable, IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>, ISpanFormattable, IUtf8SpanFormattable, IUtf8SpanParsable<System.Text.Rune>
public readonly struct Rune : IComparable, IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>
public readonly struct Rune : IComparable, IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>, ISpanFormattable
public readonly struct Rune : IComparable, IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>, ISpanFormattable, IUtf8SpanFormattable
public readonly struct Rune : IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>
type Rune = struct
    interface IFormattable
    interface ISpanFormattable
    interface IUtf8SpanFormattable
    interface IUtf8SpanParsable<Rune>
type Rune = struct
type Rune = struct
    interface ISpanFormattable
    interface IFormattable
type Rune = struct
    interface IFormattable
    interface ISpanFormattable
type Rune = struct
    interface IFormattable
    interface ISpanFormattable
    interface IUtf8SpanFormattable
Public Structure Rune
Implements IComparable, IComparable(Of Rune), IEquatable(Of Rune), ISpanFormattable, IUtf8SpanFormattable, IUtf8SpanParsable(Of Rune)
Public Structure Rune
Implements IComparable, IComparable(Of Rune), IEquatable(Of Rune)
Public Structure Rune
Implements IComparable, IComparable(Of Rune), IEquatable(Of Rune), ISpanFormattable
Public Structure Rune
Implements IComparable, IComparable(Of Rune), IEquatable(Of Rune), ISpanFormattable, IUtf8SpanFormattable
Public Structure Rune
Implements IComparable(Of Rune), IEquatable(Of Rune)
Dědičnost
Implementuje

Poznámky

Rune Instance představuje skalární hodnotu Unicode, což znamená libovolný bod kódu s výjimkou náhradního rozsahu (U+D800..U+DFFF). Konstruktory a operátory převodu typu ověřují vstup, takže uživatelé mohou volat rozhraní API za předpokladu, že je základní Rune instance správně vytvořená.

Pokud neznáte termíny skalární hodnota Unicode, kódový bod, náhradní rozmezí a dobře formátovaný, přečtěte si téma Úvod do kódování znaků v .NET.

Kdy použít typ Rune

Zvažte použití typu Rune, pokud váš kód:

  • Volá rozhraní API, která vyžadují skalární hodnoty Unicode.
  • Explicitní zpracování náhradních dvojic

Rozhraní API, která vyžadují skalární hodnoty Unicode

Pokud váš kód prochází char instancemi v string nebo ReadOnlySpan<char>, některé z char metod nebudou správně fungovat na char instancích, které jsou v surrogate range. Například následující rozhraní API vyžadují, aby skalární hodnota char fungovala správně:

Následující příklad ukazuje kód, který nebude správně fungovat, pokud některé z char instancí jsou náhradní body kódu:

// THE FOLLOWING METHOD SHOWS INCORRECT CODE.
// DO NOT DO THIS IN A PRODUCTION APPLICATION.
int CountLettersBadExample(string s)
{
    int letterCount = 0;

    foreach (char ch in s)
    {
        if (char.IsLetter(ch))
        { letterCount++; }
    }

    return letterCount;
}
// THE FOLLOWING METHOD SHOWS INCORRECT CODE.
// DO NOT DO THIS IN A PRODUCTION APPLICATION.
let countLettersBadExample (s: string) =
    let mutable letterCount = 0

    for ch in s do
        if Char.IsLetter ch then
            letterCount <- letterCount + 1
    
    letterCount

Tady je ekvivalentní kód, který funguje s ReadOnlySpan<char>:

// THE FOLLOWING METHOD SHOWS INCORRECT CODE.
// DO NOT DO THIS IN A PRODUCTION APPLICATION.
static int CountLettersBadExample(ReadOnlySpan<char> span)
{
    int letterCount = 0;

    foreach (char ch in span)
    {
        if (char.IsLetter(ch))
        { letterCount++; }
    }

    return letterCount;
}

Předchozí kód funguje správně s některými jazyky, jako je angličtina:

CountLettersInString("Hello")
// Returns 5

Ale nebude fungovat správně pro jazyky mimo základní vícejazyčnou rovinu, například Osage:

CountLettersInString("𐓏𐓘𐓻𐓘𐓻𐓟 𐒻𐓟")
// Returns 0

Důvodem, proč tato metoda vrací nesprávné výsledky pro text Osage je, že char instance písmen Osage jsou náhradní body kódu. Žádný bod náhradního kódu nemá dostatek informací k určení, jestli se jedná o písmeno.

Pokud změníte tento kód na to, aby se používal Rune místo char, metoda funguje správně s kódovými body mimo základní vícejazyčnou rovinu.

int CountLetters(string s)
{
    int letterCount = 0;

    foreach (Rune rune in s.EnumerateRunes())
    {
        if (Rune.IsLetter(rune))
        { letterCount++; }
    }

    return letterCount;
}
let countLetters (s: string) =
    let mutable letterCount = 0

    for rune in s.EnumerateRunes() do
        if Rune.IsLetter rune then
            letterCount <- letterCount + 1

    letterCount

Tady je ekvivalentní kód, který funguje s ReadOnlySpan<char>:

static int CountLetters(ReadOnlySpan<char> span)
{
    int letterCount = 0;

    foreach (Rune rune in span.EnumerateRunes())
    {
        if (Rune.IsLetter(rune))
        { letterCount++; }
    }

    return letterCount;
}

Předchozí kód počítá správně písmena Osage:

CountLettersInString("𐓏𐓘𐓻𐓘𐓻𐓟 𐒻𐓟")
// Returns 8

Kód, který explicitně zpracovává náhradní páry

Zvažte použití Rune typu, pokud váš kód volá rozhraní API, která explicitně pracují s náhradními body kódu, například následující metody:

Například následující metoda má speciální logiku pro řešení náhradních char párů:

static void ProcessStringUseChar(string s)
{
    Console.WriteLine("Using char");

    for (int i = 0; i < s.Length; i++)
    {
        if (!char.IsSurrogate(s[i]))
        {
            Console.WriteLine($"Code point: {(int)(s[i])}");
        }
        else if (i + 1 < s.Length && char.IsSurrogatePair(s[i], s[i + 1]))
        {
            int codePoint = char.ConvertToUtf32(s[i], s[i + 1]);
            Console.WriteLine($"Code point: {codePoint}");
            i++; // so that when the loop iterates it's actually +2
        }
        else
        {
            throw new Exception("String was not well-formed UTF-16.");
        }
    }
}

Takový kód je jednodušší, pokud používá Rune, jako v následujícím příkladu:

static void ProcessStringUseRune(string s)
{
    Console.WriteLine("Using Rune");

    for (int i = 0; i < s.Length;)
    {
        if (!Rune.TryGetRuneAt(s, i, out Rune rune))
        {
            throw new Exception("String was not well-formed UTF-16.");
        }

        Console.WriteLine($"Code point: {rune.Value}");
        i += rune.Utf16SequenceLength; // increment the iterator by the number of chars in this Rune
    }
}

Kdy se nepoužívá Rune

Pokud váš kód splňuje podmínky, nemusíte používat typ Rune.

  • Hledá přesné char shody.
  • Rozdělí řetězec podle zadaného znaku.

Použití typu Rune může vrátit nesprávné výsledky, pokud váš kód:

  • Spočítá počet zobrazovaných znaků v string

Vyhledání přesných char shod

Následující kód prochází hledáním string konkrétních znaků a vrátí index první shody. Tento kód není nutné měnit tak, aby se používal Rune, protože kód hledá znaky, které jsou reprezentovány jedním char.

int GetIndexOfFirstAToZ(string s)
{
    for (int i = 0; i < s.Length; i++)
    {
        char thisChar = s[i];
        if ('A' <= thisChar && thisChar <= 'Z')
        {
            return i; // found a match
        }
    }

    return -1; // didn't find 'A' - 'Z' in the input string
}

Rozděl řetězec na známé char

Je běžné volat string.Split a používat oddělovače, jako je ' ' (mezera) nebo ',' (čárka), jak je znázorněno v následujícím příkladu:

string inputString = "🐂, 🐄, 🐆";
string[] splitOnSpace = inputString.Split(' ');
string[] splitOnComma = inputString.Split(',');

Zde není nutné používat Rune , protože kód hledá znaky, které jsou reprezentovány jedním char.

Spočítat počet zobrazovaných znaků v string

Počet Rune instancí v řetězci nemusí odpovídat počtu uživatelsky srozumitelných znaků zobrazených při zobrazení řetězce.

Vzhledem k tomu, že Rune instance představují skalární hodnoty Unicode, mohou komponenty, které dodržují pokyny pro segmentaci textu Unicode , použít Rune jako stavební blok pro počítání zobrazovaných znaků.

Typ StringInfo lze použít k počítání zobrazovaných znaků, ale ve všech scénářích jiných než .NET 5 nebo novějších se nepočítá správně.

Další informace najdete v tématu Graphemové clustery.

Jak vytvořit instanci Rune

Existuje několik způsobů, jak získat Rune instanci. Konstruktor můžete použít k vytvoření Rune přímo z:

  • Bod kódu.

    Rune a = new Rune(0x0061); // LATIN SMALL LETTER A
    Rune b = new Rune(0x10421); // DESERET CAPITAL LETTER ER
    
  • Jedenchar.

    Rune c = new Rune('a');
    
  • Náhradní char pár.

    Rune d = new Rune('\ud83d', '\udd2e'); // U+1F52E CRYSTAL BALL
    

Všechny konstruktory vyvolají výjimku ArgumentException, pokud vstup nepředstavuje platnou skalární hodnotu Unicode.

Pro volající, kteří nechtějí, aby při selhání docházelo k vyvolání výjimek, jsou dostupné metody Rune.TryCreate.

Rune Instance lze také číst z existujících vstupních sekvencí. Například pokud ReadOnlySpan<char> představuje data UTF-16, metoda Rune.DecodeFromUtf16 vrátí první výskyt Rune na začátku vstupního úseku. Metoda Rune.DecodeFromUtf8 funguje podobně a přijímá ReadOnlySpan<byte> parametr, který představuje data UTF-8. Jsou k dispozici ekvivalentní metody pro čtení od konce rozsahu místo od začátku rozsahu.

Vlastnosti dotazu Rune

Chcete-li získat celočíselnou hodnotu Rune bodu kódu instance, použijte Rune.Value vlastnost.

Rune rune = new Rune('\ud83d', '\udd2e'); // U+1F52E CRYSTAL BALL
int codePoint = rune.Value; // = 128302 decimal (= 0x1F52E)

Mnoho statických rozhraní API dostupných pro typ char je také k dispozici pro typ Rune. Například jsou Rune.IsWhiteSpace a Rune.GetUnicodeCategory ekvivalenty k metodám Char.IsWhiteSpace a Char.GetUnicodeCategory. Metody Rune správně zpracovávají náhradní páry.

Následující příklad kódu přebírá ReadOnlySpan<char> jako vstup a ořízne z počátečního i koncového rozsahu každý Rune , který není písmenem nebo číslicí.

static ReadOnlySpan<char> TrimNonLettersAndNonDigits(ReadOnlySpan<char> span)
{
    // First, trim from the front.
    // If any Rune can't be decoded
    // (return value is anything other than "Done"),
    // or if the Rune is a letter or digit,
    // stop trimming from the front and
    // instead work from the end.
    while (Rune.DecodeFromUtf16(span, out Rune rune, out int charsConsumed) == OperationStatus.Done)
    {
        if (Rune.IsLetterOrDigit(rune))
        { break; }
        span = span[charsConsumed..];
    }

    // Next, trim from the end.
    // If any Rune can't be decoded,
    // or if the Rune is a letter or digit,
    // break from the loop, and we're finished.
    while (Rune.DecodeLastFromUtf16(span, out Rune rune, out int charsConsumed) == OperationStatus.Done)
    {
        if (Rune.IsLetterOrDigit(rune))
        { break; }
        span = span[..^charsConsumed];
    }

    return span;
}

Mezi char a Rune existují určité rozdíly v API. Příklad:

Převeďte Rune na UTF-8 nebo UTF-16

Rune Vzhledem k tomu, že je skalární hodnota Unicode, lze ji převést na kódování UTF-8, UTF-16 nebo UTF-32. Typ Rune má integrovanou podporu převodu na UTF-8 a UTF-16.

Rune.EncodeToUtf16 Převede Rune instanci na char instance. Chcete-li zjistit počet instancí char, které by byly výsledkem převodu instance Rune na UTF-16, použijte vlastnost Rune.Utf16SequenceLength. Podobné metody existují pro převod UTF-8.

Následující příklad převede Rune instanci na char pole. Kód předpokládá, že máte instanci Rune v proměnné rune.

char[] chars = new char[rune.Utf16SequenceLength];
int numCharsWritten = rune.EncodeToUtf16(chars);

Vzhledem k tomu, že string je posloupností znaků UTF-16, následující příklad také převede instanci Rune na UTF-16:

string theString = rune.ToString();

Následující příklad převede Rune instanci na bajtové UTF-8 pole:

byte[] bytes = new byte[rune.Utf8SequenceLength];
int numBytesWritten = rune.EncodeToUtf8(bytes);

Metody Rune.EncodeToUtf16 a Rune.EncodeToUtf8 vrátí skutečný počet zapsaných prvků. Vyvolají výjimku, pokud je cílová vyrovnávací paměť příliš krátká, aby obsahovala výsledek. Existují i metody TryEncodeToUtf8 a TryEncodeToUtf16 pro volající, kteří se chtějí vyhnout výjimkám.

Runy v .NET vs. jiných jazycích

Termín rune není definován ve standardu Unicode. Termín pochází zpět k vytvoření UTF-8. Rob Pike a Ken Thompson hledali termín, který by nakonec popsal, co by se nakonec stalo známým jako kódový bod. Usadili se na termínu "rune", a Rob Pike později vliv na programovací jazyk Go pomohl popularizovat termín.

Typ .NET Rune však není ekvivalentem typu Go rune . V Go je rune typ alias pro int32. Runa Go má představovat kódový bod Unicode, ale může to být jakákoli 32bitová hodnota, včetně náhradních kódových bodů a hodnot, které nejsou legálními kódovými body Unicode.

Podobné typy v jiných programovacích jazycích najdete, viz primitivní typ char Rustu nebo typ Unicode.Scalar Swiftu, které oba představují skalární hodnoty Unicode. Poskytují funkce podobné typu Rune v .NET a nepovolují vytváření instancí hodnot, které nejsou platnými skalárními hodnotami Unicode.

Konstruktory

Name Description
Rune(Char, Char)

Rune Vytvoří ze zadaného páru náhradních souborů UTF-16.

Rune(Char)

Rune Vytvoří z poskytnuté jednotky kódu UTF-16.

Rune(Int32)

Rune Vytvoří ze zadaného 32bitového celého čísla, které představuje skalární hodnotu Unicode.

Rune(UInt32)

Rune Vytvoří ze zadaného 32bitového celého čísla bez znaménka, které představuje skalární hodnotu Unicode.

Vlastnosti

Name Description
IsAscii

Získá hodnotu, která označuje, zda skalární hodnota přidružená k tomu Rune je v rozsahu kódování ASCII.

IsBmp

Získá hodnotu, která označuje, zda skalární hodnota přidružená k tomu Rune je v rozsahu kódování BMP.

Plane

Získá rovinu Unicode (0 až 16 včetně), která obsahuje tento skalární.

ReplacementChar

Rune Získá instanci, která představuje znak nahrazení Unicode U+FFFD.

Utf16SequenceLength

Získá délku v jednotkách kódu (Char) sekvence UTF-16 vyžadované k reprezentaci této skalární hodnoty.

Utf8SequenceLength

Získá délku v jednotkách kódu sekvence UTF-8 vyžadované k reprezentaci této skalární hodnoty.

Value

Získá skalární hodnotu Unicode jako celé číslo.

Metody

Name Description
CompareTo(Rune)

Porovná aktuální instanci se zadanou Rune instancí.

DecodeFromUtf16(ReadOnlySpan<Char>, Rune, Int32)

Dekóduje Rune na začátku poskytnuté zdrojové vyrovnávací paměti UTF-16.

DecodeFromUtf8(ReadOnlySpan<Byte>, Rune, Int32)

Dekóduje Rune na začátku poskytnuté zdrojové vyrovnávací paměti UTF-8.

DecodeLastFromUtf16(ReadOnlySpan<Char>, Rune, Int32)

Dekóduje Rune na konci poskytnuté zdrojové vyrovnávací paměti UTF-16.

DecodeLastFromUtf8(ReadOnlySpan<Byte>, Rune, Int32)

Dekóduje Rune na konci poskytnuté zdrojové vyrovnávací paměti UTF-8.

EncodeToUtf16(Span<Char>)

Zakóduje ho Rune do cílové vyrovnávací paměti UTF-16.

EncodeToUtf8(Span<Byte>)

Zakóduje ho Rune do cílové vyrovnávací paměti UTF-8.

Equals(Object)

Vrátí hodnotu, která určuje, zda aktuální instance a zadaný objekt jsou stejné.

Equals(Rune, StringComparison)

Představuje skalární hodnotu Unicode ([ U+0000..U+D7FF ], inclusive; nebo [ U+E000.. U+10FFFF ], včetně).

Equals(Rune)

Vrátí hodnotu, která určuje, zda je aktuální instance a zadaná rune rovna.

GetHashCode()

Vrátí kód hash pro tuto instanci.

GetNumericValue(Rune)

Získá číselnou hodnotu přidruženou k zadanému spuštění.

GetRuneAt(String, Int32)

Rune Získá ten, který začíná na zadané pozici v řetězci.

GetUnicodeCategory(Rune)

Získá kategorii Unicode přidruženou k zadanému spuštění.

IsControl(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorie jako řídicí znak.

IsDigit(Rune)

Vrátí hodnotu, která určuje, jestli je zadaný rune zařazený do kategorií jako desetinná číslice.

IsLetter(Rune)

Vrátí hodnotu, která určuje, jestli je zadaný rune zařazený do kategorií jako písmeno.

IsLetterOrDigit(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorií jako písmeno nebo desetinná číslice.

IsLower(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorie malými písmeny.

IsNumber(Rune)

Vrátí hodnotu, která určuje, jestli je zadaný rune zařazený do kategorie jako číslo.

IsPunctuation(Rune)

Vrátí hodnotu, která určuje, jestli je zadaný rune zařazený do kategorií jako interpunkční znaménko.

IsSeparator(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorie jako oddělovač znaku.

IsSymbol(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorie jako znak symbolu.

IsUpper(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorií jako velké písmeno.

IsValid(Int32)

Vrátí hodnotu, která označuje, zda 32bitové celé číslo se znaménkem představuje platnou skalární hodnotu Unicode; to znamená, že je v rozsahu [ U+0000..U+D7FF ], inclusive; nebo [ U+E000.. U+10FFFF ], včetně.

IsValid(UInt32)

Vrátí hodnotu, která označuje, zda 32bitové celé číslo bez znaménka představuje platnou skalární hodnotu Unicode; to znamená, že je v rozsahu [ U+0000..U+D7FF ], inclusive, nebo [ U+E000.. U+10FFFF ], včetně.

IsWhiteSpace(Rune)

Vrátí hodnotu, která určuje, zda je zadaný rune zařazen do kategorií jako prázdný znak.

ToLower(Rune, CultureInfo)

Vrátí kopii zadaného Rune převedeného na malá písmena pomocí pravidel velikostí písmen zadané jazykové verze.

ToLowerInvariant(Rune)

Vrátí kopii zadaného Rune převedeného na malá písmena pomocí pravidel malých písmen invariantní jazykové verze.

ToString()

Vrátí řetězcovou reprezentaci této Rune instance.

ToUpper(Rune, CultureInfo)

Vrátí kopii zadaného Rune převedeného na velká písmena pomocí pravidel velikostí písmen zadané jazykové verze.

ToUpperInvariant(Rune)

Vrátí kopii zadaného Rune převedeného na velká písmena pomocí pravidel velikostí písmen invariantní jazykové verze.

TryCreate(Char, Char, Rune)

Pokusí se vytvořit Rune ze zadané dvojice náhradních souborů UTF-16 a vrátí hodnotu, která označuje, zda byla operace úspěšná.

TryCreate(Char, Rune)

Pokusí se vytvořit ze zadaného znaku Rune hodnotu, která označuje, jestli operace proběhla úspěšně.

TryCreate(Int32, Rune)

Pokusí se Rune vytvořit ze zadaného podepsaného celého čísla, které představuje skalární hodnotu Unicode.

TryCreate(UInt32, Rune)

Pokusí se Rune vytvořit ze zadaného 32bitového celého čísla bez znaménka, které představuje skalární hodnotu Unicode.

TryEncodeToUtf16(Span<Char>, Int32)

Tento kód zakóduje Rune do cílové vyrovnávací paměti kódování UTF-16.

TryEncodeToUtf8(Span<Byte>, Int32)

Tento kód zakóduje Rune do cílové vyrovnávací paměti kódování UTF-8.

TryGetRuneAt(String, Int32, Rune)

Pokusí se získat Rune hodnotu, která začíná na zadané pozici v řetězci, a vrátí hodnotu, která označuje, jestli operace proběhla úspěšně.

Operátory

Name Description
Equality(Rune, Rune)

Vrátí hodnotu, která určuje, zda jsou dvě Rune instance stejné.

Explicit(Char to Rune)

Definuje explicitní převod 16bitového znaku Unicode na Runeznak .

Explicit(Int32 to Rune)

Definuje explicitní převod 32bitového signed integer na Rune.

Explicit(UInt32 to Rune)

Definuje explicitní převod 32bitového celočíselného čísla bez znaménka na znak .Rune

GreaterThan(Rune, Rune)

Vrátí hodnotu určující, zda je zadaná Rune hodnota větší než jiná zadaná Runehodnota .

GreaterThanOrEqual(Rune, Rune)

Vrátí hodnotu určující, zda je zadaná Rune hodnota větší nebo rovna jinému zadanému .Rune

Inequality(Rune, Rune)

Vrátí hodnotu, která určuje, jestli mají dvě Rune instance různé hodnoty.

LessThan(Rune, Rune)

Vrátí hodnotu určující, zda je zadaná Rune hodnota menší než jiná zadaná Runehodnota .

LessThanOrEqual(Rune, Rune)

Vrátí hodnotu určující, zda je zadaná Rune hodnota menší nebo rovna jinému zadanému .Rune

Explicitní implementace rozhraní

Name Description
IComparable.CompareTo(Object)

Porovná aktuální instanci se zadaným objektem.

IFormattable.ToString(String, IFormatProvider)

Naformátuje hodnotu aktuální instance pomocí zadaného formátu.

ISpanFormattable.TryFormat(Span<Char>, Int32, ReadOnlySpan<Char>, IFormatProvider)

Pokusí se naformátovat hodnotu aktuální instance do zadaného rozsahu znaků.

IUtf8SpanFormattable.TryFormat(Span<Byte>, Int32, ReadOnlySpan<Char>, IFormatProvider)

Pokusí se naformátovat hodnotu aktuální instance jako UTF-8 do poskytnutého rozsahu bajtů.

IUtf8SpanParsable<Rune>.Parse(ReadOnlySpan<Byte>, IFormatProvider)

Parsuje rozsah znaků UTF-8 do hodnoty.

IUtf8SpanParsable<Rune>.TryParse(ReadOnlySpan<Byte>, IFormatProvider, Rune)

Představuje skalární hodnotu Unicode ([ U+0000..U+D7FF ], inclusive; nebo [ U+E000.. U+10FFFF ], včetně).

Platí pro