Задать вопрос
Ответы пользователя по тегу C#
  • Как привести русский текст к виду \u0418\u043b\u044c\u044f?

    using System;
    using System.Text;
    
    class Program
    {
        static void Main()
        {
            string st = "Привет, мир!";
            Console.WriteLine(foo(st));
        }
        
        static string foo(string input)
        {
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < input.Length; i += Char.IsSurrogatePair(input, i) ? 2 : 1)
            {
                int index = Char.ConvertToUtf32(input, i);
                sb.Append(@"\u" + index.ToString("x4"));
            }
            
            return sb.ToString();
        }
    }


    Для суррогатных пар будет выдавать "некрасивые" значения - цифр будет больше четырёх штук.
    Если планируется с ними работать, надо что-то придумать. Например, для всех формат "x8".
    Если же нет, лучше кидать исключение по if(Char.IsSurrogatePair(input, i)).
    Ответ написан
    Комментировать