Я пытаюсь понять, как System.Text.Rune отличается от встроенного типа ChAR, особенно в контексте обработки символов Unicode за пределами основной многоязычной плоскости (BMP). < /p>
Как использование руны влияет на обработку и манипуляцию не ASCII или суррогатных символов? Операции? Распородство между рунами и типом данных Char, когда дело доходит до обработки символов Unicode. < /p>
using System;
using System.Text;
class Program
{
private static void Main()
{
const string input = "Hello 𝓦orld!"; // "𝓦" is a surrogate pair (outside BMP)
// Counting characters using 'char'
// Each UTF-16 code unit is counted as one character
Console.WriteLine("Using char:");
Console.WriteLine($"Character count: {input.Length}"); // May count surrogate pairs as two
// Counting characters using 'Rune'
// Each full Unicode code point is counted as one
Console.WriteLine("\nUsing Rune:");
var runeCount = CountRunes(input);
Console.WriteLine($"Character count: {runeCount}");
}
///
/// Counts the number of Unicode scalar values (code points) in a string.
/// Uses Rune.EnumerateRunes which handles surrogate pairs correctly.
///
private static int CountRunes(string input)
{
return input.EnumerateRunes().Count();
}
}
Подробнее здесь: https://stackoverflow.com/questions/764 ... unicode-ch
В чем разница между Руной и Чар в C# при обращении с символами Unicode? ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение