Заглавные строки в C #, содержащие escape-символы html

#c# #string #capitalization #html-escape-characters

#c# #строка #заглавные буквы #html-escape-символы

Вопрос:

Я пытаюсь заглавить некоторый текст, который может содержать escape-символы html. Есть ли какой-либо способ сделать это, кроме как с помощью регулярных выражений? Вот несколько примеров кода:

 using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");


            string input = "Bamp;amp;G fried pie";
            string output = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(input.ToLowerInvariant());

            Console.WriteLine(output);  //Should be Bamp;amp;G Fried Pie
            Console.ReadKey();

        }
    }
}
  

Другой способ, который я могу придумать, — заменить amp;amp ; на amp; , выполните мой регистр заголовка, затем замените amp; на amp;amp .

Комментарии:

1. htmlдекодируйте («html unescape», так сказать) строку, заглавную ее, HtmlEncode ее обратно…

Ответ №1:

Вы можете использовать System.Web.HttpUtility класс для декодирования html-строк, так что ваш код будет выглядеть примерно так:

 private static string ToTitleCase(string input)
{
    return input == null
        ? null
        : HttpUtility.HtmlEncode(CultureInfo.InvariantCulture.TextInfo
            .ToTitleCase(HttpUtility.HtmlDecode(input.ToLowerInvariant())));
}
  

И при использовании это выглядело бы примерно так:

 Console.WriteLine(ToTitleCase("Bamp;amp;G fried pie"));