Я думаю, что заменить регулярное выражение проще всего:
s = Regex.Replace(
s,
@"<0[Xx]([\dA-Fa-f]{2})>",
m => ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString()
);
При сопоставлении с точным шаблоном это накладывает меньше ограничений на строку, например, символы <
и >
могутвсе еще будет использоваться.Кроме того, если тег окажется неправильным, он просто останется неизменным, а не вызовет исключение.
Это заменит такие теги, как <0X4A>
и <0x4a>
, но, например, <0x04a>
останется неизменным..