#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"));