Декодирование \u. в строковый эквивалент - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет Получаю строку HtmlNode.InnerText и там имею строки по типу \u0097 , нужно их заменить строковым эквивалентом. Можно было бы прогнать через Replace() или поиграться с байтами, но у меня приходят очень длинные строки (описание к фильмам) и где будут стоять \u.... и какие там будут цифры, я даже примерно не знаю. Подскажите класс и метод для декодирования. Вот пример строки, которая возвращается:
Юная Холли Паркер живет в солнечной Калифорнии с самым замечательным отцом на свете, а ее ровесница Энни Джеймс \u0097 в туманном Лондоне с прекрасной любящей матерью. Первая мечтает о маме, без которой ей очень тяжело, а второй так хочется, чтобы у нее был папа.Когда девочки случайно встречаются в летнем лагере, им есть, чем поделиться друг с другом. Но помимо общих горестей между Холли и Энни существует еще одно сходство: они\u0085 близнецы! Их родители развелись много лет назад, и девочки решают исправить эту трагическую ошибку.Сестрички начинают действовать: американка возвращается в Лондон, а англичанка в Америку. И ничего не подозревающие родители легко попадают в ловушку\u0085

Решение задачи: «Декодирование \u. в строковый эквивалент»

textual
Листинг программы
string text = "Юная Холли Паркер живет в солнечной Калифорнии с самым замечательным отцом на свете, а ее ровесница Энни Джеймс \\u0097 в туманном Лондоне с прекрасной любящей матерью. Первая мечтает о маме, без которой ей очень тяжело, а второй так хочется, чтобы у нее был папа.Когда девочки случайно встречаются в летнем лагере, им есть, чем поделиться друг с другом. Но помимо общих горестей между Холли и Энни существует еще одно сходство: они\\u0085 близнецы! Их родители развелись много лет назад, и девочки решают исправить эту трагическую ошибку.Сестрички начинают действовать: американка возвращается в Лондон, а англичанка в Америку. И ничего не подозревающие родители легко попадают в ловушку\\u0085";
 
string[] win1251chars = Enumerable.Repeat(Encoding.GetEncoding(1251), 256).Select((enc,n) => enc.GetString(new byte[]{(byte)n})).ToArray();
 
text = Regex.Replace(
    text,
    @"\\u([\da-fA-F]{4})",
    m => {
        int code = (int)byte.Parse(m.Groups[1].Value, NumberStyles.HexNumber);
        return win1251chars[code];
    }
);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы