Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static readonly string[] BeginTagVariations = { "< i >", "< i>", "<i >", "< I >", "< I>", "<I >", "<i<", "<I<", "<I>" };
- private static readonly string[] EndTagVariations =
- {
- "< / i >", "< /i>", "</ i>", "< /i >", "</i >", "</ i >",
- "< / i>", "</I>", "< / I >", "< /I>", "</ I>", "< /I >", "</I >", "</ I >", "< / I>", "</i<", "</I<", "</I>"
- };
- /// <summary>
- /// Fix invalid or improperly formatted italic tags in the input HTML string.
- /// </summary>
- /// <param name="input">The input HTML string to process.</param>
- /// <returns>A string with corrected italic tags.</returns>
- public static string FixInvalidItalicTags(string input)
- {
- var text = input;
- var preTags = string.Empty;
- if (text.StartsWith("{\\", StringComparison.Ordinal))
- {
- var endIdx = text.IndexOf('}', 2);
- if (endIdx > 2)
- {
- preTags = text.Substring(0, endIdx + 1);
- text = text.Remove(0, endIdx + 1);
- }
- }
- const string beginTag = "<i>";
- const string endTag = "</i>";
- int r = text.Length - 1;
- for (int l = text.Length - 1; l >= 0; l--)
- {
- if (text[l] == '>' || text[l] == '<')
- {
- r = l;
- }
- else if ((text[l] == '<' && text[r] == '>') || (text[r] == '<' && text[l] == '<'))
- {
- var tag = text.Substring(l, r - l + 1);
- if (BeginTagVariations.Contains(tag))
- {
- text = text.Remove(l, tag.Length);
- text = text.Insert(l, beginTag);
- }
- else if (EndTagVariations.Contains(tag))
- {
- text = text.Remove(l, tag.Length);
- text = text.Insert(l, endTag);
- }
- r = l - 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement