Rune Структура

Определение

Представляет скалярное значение Юникода ([U+0000.. U+D7FF] включительно или [U+E000..U+10FFFF] включительно).Represents a Unicode scalar value ([ U+0000..U+D7FF ], inclusive; or [ U+E000..U+10FFFF ], inclusive).

public value class Rune : IComparable, IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>
public value class Rune : IComparable<System::Text::Rune>, IEquatable<System::Text::Rune>
public struct Rune : IComparable, IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>
public struct Rune : IComparable<System.Text.Rune>, IEquatable<System.Text.Rune>
type Rune = struct
Public Structure Rune
Implements IComparable, IComparable(Of Rune), IEquatable(Of Rune)
Public Structure Rune
Implements IComparable(Of Rune), IEquatable(Of Rune)
Наследование
Реализации

Комментарии

RuneЭкземпляр представляет скалярное значение Юникода, означающее, что любая кодовая точка, исключая суррогатный диапазон (U + D800. U + DFFF).A Rune instance represents a Unicode scalar value, which means any code point excluding the surrogate range (U+D800..U+DFFF). Конструкторы типа и операторы преобразования проверяют входные данные, поэтому потребители могут вызывать API, предполагая, что базовый Rune экземпляр правильно сформирован.The type's constructors and conversion operators validate the input, so consumers can call the APIs assuming that the underlying Rune instance is well formed.

Если вы не знакомы с условиями скалярного значения в Юникоде, кодовой точки, суррогатного диапазона и правильного формата, см. статью Введение в кодировку символов в .NET.If you aren't familiar with the terms Unicode scalar value, code point, surrogate range, and well-formed, see Introduction to character encoding in .NET.

В следующих разделах описывается:The following sections explain:

Когда следует использовать тип РунеWhen to use the Rune type

Используйте тип, Rune Если код:Consider using the Rune type if your code:

  • Вызывает API, требующие скалярных значений в ЮникодеCalls APIs that require Unicode scalar values
  • Явно обрабатывает суррогатные парыExplicitly handles surrogate pairs

API, для которых требуются скалярные значения ЮникодаAPIs that require Unicode scalar values

Если код проходит через char экземпляры в string или ReadOnlySpan<char> , некоторые char методы не будут правильно работать на экземплярах, находящийся char в диапазоне суррогатов.If your code iterates through the char instances in a string or a ReadOnlySpan<char>, some of the char methods won't work correctly on char instances that are in the surrogate range. Например, для правильной работы следующих API требуется скалярное значение char :For example, the following APIs require a scalar value char to work correctly:

В следующем примере показан код, который будет работать неправильно, если любой из char экземпляров является суррогатной кодовой точкой:The following example shows code that won't work correctly if any of the char instances are surrogate code points:

// 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;
}

Вот эквивалентный код, который работает с ReadOnlySpan<char> :Here's equivalent code that works with a 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;
}

Приведенный выше код правильно работает на некоторых языках, например на английском языке:The preceding code works correctly with some languages such as English:

CountLettersInString("Hello")
// Returns 5

Но он будет работать неправильно для языков, не входящих в стандартную многоязыковую плоскость, например Осаже:But it won't work correctly for languages outside the Basic Multilingual Plane, such as Osage:

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

Причина, по которой этот метод возвращает неверные результаты для Осаже текста, заключается в том, что char экземпляры для осаже букв являются суррогатными кодовыми точками.The reason this method returns incorrect results for Osage text is that the char instances for Osage letters are surrogate code points. Ни одна суррогатная кодовая точка не содержит достаточно информации, чтобы определить, является ли она буквой.No single surrogate code point has enough information to determine if it's a letter.

Если изменить этот код для использования Rune вместо char , метод будет правильно работать с точками кода за пределами базовой многоязычной плоскости:If you change this code to use Rune instead of char, the method works correctly with code points outside the Basic Multilingual Plane:

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

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

    return letterCount;
}

Вот эквивалентный код, который работает с ReadOnlySpan<char> :Here's equivalent code that works with a ReadOnlySpan<char>:

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

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

    return letterCount;
}

Приведенный выше код правильно подсчитывает Осаже буквы.The preceding code counts Osage letters correctly:

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

Код, который явно обрабатывает суррогатные парыCode that explicitly handles surrogate pairs

Используйте тип, Rune Если ваш код вызывает API-интерфейсы, которые явно работают с суррогатными кодовыми точками, например следующие методы:Consider using the Rune type if your code calls APIs that explicitly operate on surrogate code points, such as the following methods:

Например, следующий метод имеет специальную логику для работы с суррогатными char парами:For example, the following method has special logic to deal with surrogate char pairs:

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.");
        }
    }
}

Такой код проще, если он используется Rune , как показано в следующем примере:Such code is simpler if it uses Rune, as in the following example:

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
    }
}

Когда не следует использовать RuneWhen not to use Rune

Не нужно использовать Rune тип, если код:You don't need to use the Rune type if your code:

  • Поиск точных char совпаденийLooks for exact char matches
  • Разделяет строку на известное значение CharSplits a string on a known char value

Использование Rune типа может вернуть неверные результаты, если код:Using the Rune type may return incorrect results if your code:

  • Подсчитывает количество отображаемых символов в элементе stringCounts the number of display characters in a string

Поиск точных char совпаденийLook for exact char matches

Следующий код выполняет итерацию по string поиску конкретных символов, возвращая индекс первого совпадения.The following code iterates through a string looking for specific characters, returning the index of the first match. Нет необходимости изменять этот код для использования Rune , так как код ищет символы, представленные одним char .There's no need to change this code to use Rune, as the code is looking for characters that are represented by a single 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
}

Разделение строки на известном charSplit a string on a known char

Обычно вызываются string.Split и используются разделители, такие как ' ' (пробел) или ',' (запятая), как показано в следующем примере:It's common to call string.Split and use delimiters such as ' ' (space) or ',' (comma), as in the following example:

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

Здесь нет необходимости использовать Rune , поскольку код ищет символы, представленные одним char .There is no need to use Rune here, because the code is looking for characters that are represented by a single char.

Подсчитайте количество отображаемых символов в элементе stringCount the number of display characters in a string

Количество Rune экземпляров в строке может не совпадать с числом воспринимаемого символов, отображаемым при отображении строки.The number of Rune instances in a string might not match the number of user-perceivable characters shown when displaying the string.

Поскольку Rune экземпляры представляют собой скалярные значения в Юникоде, компоненты, которые следуют правилам сегментации текста Юникода , могут использовать Rune в качестве стандартного блока для подсчета отображаемых символов.Since Rune instances represent Unicode scalar values, components that follow the Unicode text segmentation guidelines can use Rune as a building block for counting display characters.

StringInfoТип можно использовать для подсчета отображаемых символов, но в реализациях .NET, отличных от .NET 5, он неверно учитывается во всех сценариях.The StringInfo type can be used to count display characters, but in implementations of .NET other than .NET 5 it doesn't count correctly in all scenarios.

Дополнительные сведения см. в разделе кластеры графеме.For more information, see Grapheme clusters.

Как создать экземпляр RuneHow to instantiate a Rune

Существует несколько способов получения Rune экземпляра.There are several ways to get a Rune instance. Конструктор можно использовать для создания Rune непосредственно из:You can use a constructor to create a Rune directly from:

  • Кодовая точка.A code point.

    Rune a = new Rune(0x0061); // LATIN SMALL LETTER A
    Rune b = new Rune(0x10421); // DESERET CAPITAL LETTER ER
    
  • Один файл char.A single char.

    Rune c = new Rune('a');
    
  • Суррогатная char пара.A surrogate char pair.

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

Все конструкторы создают исключение, ArgumentException Если входные данные не представляют Допустимое скалярное значение Юникода.All of the constructors throw an ArgumentException if the input doesn't represent a valid Unicode scalar value.

Существуют Rune.TryCreate методы, доступные для вызывающих объектов, которые не хотят вызывать исключения при сбое.There are Rune.TryCreate methods available for callers who don't want exceptions to be thrown on failure.

Rune экземпляры также могут быть считаны из существующих входных последовательностей.Rune instances can also be read from existing input sequences. Например, при наличии объекта ReadOnlySpan<char> , представляющего данные UTF-16, Rune.DecodeFromUtf16 метод возвращает первый Rune экземпляр в начале входного диапазона.For instance, given a ReadOnlySpan<char> that represents UTF-16 data, the Rune.DecodeFromUtf16 method returns the first Rune instance at the beginning of the input span. Rune.DecodeFromUtf8Метод действует аналогично, принимая ReadOnlySpan<byte> параметр, представляющий данные в кодировке UTF-8.The Rune.DecodeFromUtf8 method operates similarly, accepting a ReadOnlySpan<byte> parameter that represents UTF-8 data. Есть эквивалентные методы для чтения из конца диапазона, а не с начала диапазона.There are equivalent methods to read from the end of the span instead of the beginning of the span.

Свойства запроса RuneQuery properties of a Rune

Чтобы получить целочисленное значение кодовой точки Rune экземпляра, используйте Rune.Value свойство.To get the integer code point value of a Rune instance, use the Rune.Value property.

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

Многие из статических интерфейсов API, доступных для char типа, также доступны в Rune типе.Many of the static APIs available on the char type are also available on the Rune type. Например, Rune.IsWhiteSpace методы и Rune.GetUnicodeCategory эквивалентны Char.IsWhiteSpace Char.GetUnicodeCategory методам и.For instance, Rune.IsWhiteSpace and Rune.GetUnicodeCategory are equivalents to Char.IsWhiteSpace and Char.GetUnicodeCategory methods. RuneМетоды правильно обрабатывали суррогатные пары.The Rune methods correctly handle surrogate pairs.

В следующем примере кода в ReadOnlySpan<char> качестве входных данных принимается и обрезается как с начала, так и с конца диапазона Rune , который не является буквой или цифрой.The following example code takes a ReadOnlySpan<char> as input and trims from both the start and the end of the span every Rune that isn't a letter or a digit.

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;
}

Существуют различия в API между char и Rune .There are some API differences between char and Rune. Пример:For example:

Преобразование в Rune UTF-8 или UTF-16Convert a Rune to UTF-8 or UTF-16

Поскольку объект Rune является скалярным значением Юникода, его можно преобразовать в кодировку UTF-8, UTF-16 или UTF-32.Since a Rune is a Unicode scalar value, it can be converted to UTF-8, UTF-16, or UTF-32 encoding. RuneТип имеет встроенную поддержку преобразования в UTF-8 и UTF-16.The Rune type has built-in support for conversion to UTF-8 and UTF-16.

Rune.EncodeToUtf16Преобразует Rune экземпляр в char экземпляры.The Rune.EncodeToUtf16 converts a Rune instance to char instances. Чтобы запросить количество char экземпляров, которые могут быть результатом преобразования Rune экземпляра в UTF-16, используйте Rune.Utf16SequenceLength свойство.To query the number of char instances that would result from converting a Rune instance to UTF-16, use the Rune.Utf16SequenceLength property. Аналогичные методы существуют для преобразования UTF-8.Similar methods exist for UTF-8 conversion.

В следующем примере экземпляр преобразуется Rune в char массив.The following example converts a Rune instance to a char array. В коде предполагается, что у вас есть Rune экземпляр в rune переменной:The code assumes you have a Rune instance in the rune variable:

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

Поскольку string представляет собой последовательность символов UTF-16, следующий пример также преобразует Rune экземпляр в UTF-16:Since a string is a sequence of UTF-16 chars, the following example also converts a Rune instance to UTF-16:

string theString = rune.ToString();

В следующем примере экземпляр преобразуется Rune в UTF-8 массив байтов:The following example converts a Rune instance to a UTF-8 byte array:

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

Rune.EncodeToUtf16Методы и Rune.EncodeToUtf8 возвращают фактическое число записанных элементов.The Rune.EncodeToUtf16 and Rune.EncodeToUtf8 methods return the actual number of elements written. Они вызовут исключение, если буфер назначения слишком короткий и не может содержать результат.They throw an exception if the destination buffer is too short to contain the result. Существуют методы и, Кроме того, TryEncodeToUtf8 EncodeToUtf16 для вызывающих объектов, желающих избежать исключений.There are non-throwing TryEncodeToUtf8 and EncodeToUtf16 methods as well for callers who want to avoid exceptions.

Руне в .NET и других языкахRune in .NET vs. other languages

Термин "Руне" не определен в стандарте Юникода.The term "rune" is not defined in the Unicode Standard. Термин даты возвращается к созданию UTF-8.The term dates back to the creation of UTF-8. Вадиму Пайк и Кен Thompson искали термин для описания того, что в конечном итоге стало известным как кодовая точка.Rob Pike and Ken Thompson were looking for a term to describe what would eventually become known as a code point. Они были сопоставлены с термином «Руне», а Вадим Пайк в будущем влияет на язык программирования Go, помогая популяризировала этот термин.They settled on the term "rune", and Rob Pike's later influence over the Go programming language helped popularize the term.

Однако Rune тип .NET не эквивалентен rune типу go.However, the .NET Rune type is not the equivalent of the Go rune type. В Go rune тип является псевдонимом int32 для .In Go, the rune type is an alias for int32. Руне Go предназначен для представления кодовой точки Юникода, но может быть любым 32-битным значением, включая суррогатные кодовые точки и значения, которые не являются допустимыми кодовыми точками Юникода.A Go rune is intended to represent a Unicode code point, but it can be any 32-bit value, including surrogate code points and values that are not legal Unicode code points.

Аналогичные типы в других языках программирования см. в разделе char тип-примитив Руст или Unicode.Scalar тип SWIFT, оба из которых представляют скалярные значения Юникода.For similar types in other programming languages, see Rust's primitive char type or Swift's Unicode.Scalar type, both of which represent Unicode scalar values. Они предоставляют функциональные возможности, аналогичные. Тип NET Rune и запрещает создание экземпляров значений, которые не являются допустимыми скалярными значениями в Юникоде.They provide functionality similar to .NET's Rune type, and they disallow instantiation of values that are not legal Unicode scalar values.

Конструкторы

Rune(Char)

Создает объект Rune из предоставленного блока кода UTF-16.Creates a Rune from the provided UTF-16 code unit.

Rune(Char, Char)

Создает объект Rune из предоставленной суррогатной пары UTF-16.Creates a Rune from the provided UTF-16 surrogate pair.

Rune(Int32)

Создает Rune из указанного 32-разрядного целого числа, представляющего скалярное значение Юникода.Creates a Rune from the specified 32-bit integer that represents a Unicode scalar value.

Rune(UInt32)

Создает Rune из указанного 32-разрядного целого числа без знака, представляющего скалярное значение Юникода.Creates a Rune from the specified 32-bit unsigned integer that represents a Unicode scalar value.

Свойства

IsAscii

Возвращает значение, указывающее, находится ли скалярное значение, связанное с этим Rune, в диапазоне кодирования ASCII.Gets a value that indicates whether the scalar value associated with this Rune is within the ASCII encoding range.

IsBmp

Возвращает значение, указывающее, находится ли скалярное значение, связанное с этим Rune, в диапазоне кодирования BMP.Gets a value that indicates whether the scalar value associated with this Rune is within the BMP encoding range.

Plane

Возвращает плоскость Юникода (от 0 до 16 включительно), которая содержит этот скаляр.Gets the Unicode plane (0 to 16, inclusive) that contains this scalar.

ReplacementChar

Возвращает экземпляр Rune, представляющий символ замены Юникода U+FFFD.Gets a Rune instance that represents the Unicode replacement character U+FFFD.

Utf16SequenceLength

Возвращает длину в блоках кода (Char) для последовательности UTF-16, которая должна представлять это скалярное значение.Gets the length in code units (Char) of the UTF-16 sequence required to represent this scalar value.

Utf8SequenceLength

Возвращает длину в блоках для последовательности UTF-8, которая должна представлять это скалярное значение.Gets the length in code units of the UTF-8 sequence required to represent this scalar value.

Value

Возвращает скалярное значение Юникода в виде целого числа.Gets the Unicode scalar value as an integer.

Методы

CompareTo(Rune)

Сравнивает текущий экземпляр с указанным экземпляром Rune.Compares the current instance to the specified Rune instance.

DecodeFromUtf16(ReadOnlySpan<Char>, Rune, Int32)

Декодирует в Rune начале предоставленного исходного буфера UTF-16.Decodes the Rune at the beginning of the provided UTF-16 source buffer.

DecodeFromUtf8(ReadOnlySpan<Byte>, Rune, Int32)

Декодирует в Rune начале предоставленного исходного буфера UTF-8.Decodes the Rune at the beginning of the provided UTF-8 source buffer.

DecodeLastFromUtf16(ReadOnlySpan<Char>, Rune, Int32)

Декодирует Rune в конце предоставленного исходного буфера UTF-16.Decodes the Rune at the end of the provided UTF-16 source buffer.

DecodeLastFromUtf8(ReadOnlySpan<Byte>, Rune, Int32)

Декодирует Rune в конце предоставленного исходного буфера UTF-8.Decodes the Rune at the end of the provided UTF-8 source buffer.

EncodeToUtf16(Span<Char>)

Кодирует это Rune в буфер назначения UTF-16.Encodes this Rune to a UTF-16 destination buffer.

EncodeToUtf8(Span<Byte>)

Кодирует это Rune в буфер назначения UTF-8.Encodes this Rune to a UTF-8 destination buffer.

Equals(Object)

Возвращает значение, указывающее, равен ли данный экземпляр указанному объекту.Returns a value that indicates whether the current instance and a specified object are equal.

Equals(Rune)

Возвращает значение, указывающее, равен ли данный экземпляр указанной руне.Returns a value that indicates whether the current instance and a specified rune are equal.

GetHashCode()

Возвращает хэш-код данного экземпляра.Returns the hash code for this instance.

GetNumericValue(Rune)

Получает числовое значение, связанное с указанной руной.Gets the numeric value associated with the specified rune.

GetRuneAt(String, Int32)

Возвращает объект Rune, начинающийся с указанной позиции в строке.Gets the Rune that begins at a specified position in a string.

GetUnicodeCategory(Rune)

Получает категорию Юникода, связанную с указанной руной.Gets the Unicode category associated with the specified rune.

IsControl(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории управляющих символов.Returns a value that indicates whether the specified rune is categorized as a control character.

IsDigit(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории десятичных чисел.Returns a value that indicates whether the specified rune is categorized as a decimal digit.

IsLetter(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории букв.Returns a value that indicates whether the specified rune is categorized as a letter.

IsLetterOrDigit(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории букв или десятичных чисел.Returns a value that indicates whether the specified rune is categorized as a letter or a decimal digit.

IsLower(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории букв нижнего регистра.Returns a value that indicates whether the specified rune is categorized as a lowercase letter.

IsNumber(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории цифр.Returns a value that indicates whether the specified rune is categorized as a number.

IsPunctuation(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории знаков препинания.Returns a value that indicates whether the specified rune is categorized as a punctuation mark.

IsSeparator(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории знаков разделения.Returns a value that indicates whether the specified rune is categorized as a separator character.

IsSymbol(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории знаков символов.Returns a value that indicates whether the specified rune is categorized as a symbol character.

IsUpper(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории букв верхнего регистра.Returns a value that indicates whether the specified rune is categorized as an uppercase letter.

IsValid(Int32)

Возвращает значение, указывающее, представляет ли 32-разрядное целое число со знаком допустимое скалярное значение Юникода, то есть находится ли оно в диапазоне [U+0000..U+D7FF] включительно или [U+ E000..U+10FFFF] включительно.Returns a value that indicates whether a 32-bit signed integer represents a valid Unicode scalar value; that is, it is in the range [ U+0000..U+D7FF ], inclusive; or [ U+E000..U+10FFFF ], inclusive.

IsValid(UInt32)

Возвращает значение, указывающее, представляет ли 32-разрядное целое число без знака допустимое скалярное значение Юникода, то есть находится ли оно в диапазоне [U+0000..U+D7FF] включительно или [U+ E000..U+10FFFF] включительно.Returns a value that indicates whether a 32-bit unsigned integer represents a valid Unicode scalar value; that is, it is in the range [ U+0000..U+D7FF ], inclusive, or [ U+E000..U+10FFFF ], inclusive.

IsWhiteSpace(Rune)

Возвращает значение, которое показывает, относится ли указанная руна к категории пробелов.Returns a value that indicates whether the specified rune is categorized as a white space character.

ToLower(Rune, CultureInfo)

Возвращает копию заданного Rune, преобразованного в нижний регистр, используя правила определения регистра заданного языка и региональных параметров.Returns a copy of the specified Rune converted to lowercase, using the casing rules of the specified culture.

ToLowerInvariant(Rune)

Возвращает копию указанного Rune, преобразованного в нижний регистр, используя правила учета регистра инвариантного языка и региональных параметров.Returns a copy of the specified Rune converted to lowercase using the casing rules of the invariant culture.

ToString()

Возвращает строковое представление этого экземпляра Rune.Returns the string representation of this Rune instance.

ToUpper(Rune, CultureInfo)

Возвращает копию заданного Rune, преобразованного в верхний регистр, используя правила определения регистра заданного языка и региональных параметров.Returns a copy of the specified Rune converted to uppercase, using the casing rules of the specified culture.

ToUpperInvariant(Rune)

Возвращает копию указанного Rune, преобразованного в верхний регистр, используя правила учета регистра инвариантного языка и региональных параметров.Returns a copy of the specified Rune converted to uppercase using the casing rules of the invariant culture.

TryCreate(Char, Char, Rune)

Пытается создать Rune из указанной суррогатной пары в UTF-16 и возвращает значение, указывающее, успешно ли выполнена операция.Attempts to create a Rune from the specified UTF-16 surrogate pair and returns a value that indicates whether the operation was successful.

TryCreate(Char, Rune)

Пытается создать Rune из указанного символа и возвращает значение, указывающее, успешно ли выполнена операция.Attempts to create a Rune from a specified character and returns a value that indicates whether the operation succeeded.

TryCreate(Int32, Rune)

Пытается создать Rune из указанного целого числа со знаком, представляющего скалярное значение Юникода.Attempts to create a Rune from a specified signed integer that represents a Unicode scalar value.

TryCreate(UInt32, Rune)

Пытается создать Rune из указанного целого 32-разрядного числа без знака, представляющего скалярное значение Юникода.Attempts to create a Rune from the specified 32-bit unsigned integer that represents a Unicode scalar value.

TryEncodeToUtf16(Span<Char>, Int32)

Кодирует это Rune в буфер назначения в кодировке UTF-16.Encodes this Rune to a UTF-16 encoded destination buffer.

TryEncodeToUtf8(Span<Byte>, Int32)

Кодирует это Rune в буфер назначения в кодировке UTF-8.Encodes this Rune to a UTF-8 encoded destination buffer.

TryGetRuneAt(String, Int32, Rune)

Пытается получить объект Rune, начинающийся с указанной позиции в строке, и возвращает значение, указывающее, завершилась ли операция успехом.Attempts to get the Rune that begins at a specified position in a string, and return a value that indicates whether the operation succeeded.

Операторы

Equality(Rune, Rune)

Возвращает значение, указывающее, равны ли два экземпляра Rune.Returns a value that indicates whether two Rune instances are equal.

Explicit(Char to Rune)

Определяет явное преобразование 16-разрядного символа Юникода в Rune.Defines an explicit conversion of a 16-bit Unicode character to a Rune.

Explicit(Int32 to Rune)

Определяет явное преобразование 32-разрядного целого числа со знаком в значение Rune.Defines an explicit conversion of a 32-bit signed integer to a Rune.

Explicit(UInt32 to Rune)

Определяет явное преобразование 32-разрядного целого числа без знака в значение Rune.Defines an explicit conversion of a 32-bit unsigned integer to a Rune.

GreaterThan(Rune, Rune)

Возвращает значение, позволяющее определить, действительно ли заданное значение типа Rune больше другого заданного значения типа Rune.Returns a value indicating whether a specified Rune is greater than another specified Rune.

GreaterThanOrEqual(Rune, Rune)

Возвращает значение, позволяющее определить, действительно ли заданное значение типа Rune больше или равно другому заданному значению типа Rune.Returns a value indicating whether a specified Rune is greater than or equal to another specified Rune.

Inequality(Rune, Rune)

Возвращает значение, указывающее, различаются ли значения двух экземпляров Rune.Returns a value that indicates whether two Rune instances have different values.

LessThan(Rune, Rune)

Возвращает значение, позволяющее определить, действительно ли заданное значение типа Rune меньше другого заданного значения типа Rune.Returns a value indicating whether a specified Rune is less than another specified Rune.

LessThanOrEqual(Rune, Rune)

Возвращает значение, позволяющее определить, действительно ли заданное значение типа Rune меньше или равно другому заданному значению типа Rune.Returns a value indicating whether a specified Rune is less than or equal to another specified Rune.

Явные реализации интерфейса

IComparable.CompareTo(Object)

Сравнивает текущий экземпляр с указанным объектом.Compares the current instance to the specified object.

Применяется к