Merge pull request #8353 from ivandrofly/feature/htmlutil-fix-italic

Refactor tag replacement in HtmlUtil
This commit is contained in:
Nikolaj Olsson 2024-06-05 07:13:48 +02:00 committed by GitHub
commit 8910a92568
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -634,6 +634,14 @@ namespace Nikse.SubtitleEdit.Core.Common
return false;
}
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>"
};
public static string FixInvalidItalicTags(string input)
{
var text = input;
@ -651,36 +659,15 @@ namespace Nikse.SubtitleEdit.Core.Common
const string beginTag = "<i>";
const string endTag = "</i>";
foreach (var beginTagVariation in BeginTagVariations)
{
text = text.Replace(beginTagVariation, beginTag);
}
text = text.Replace("< i >", beginTag);
text = text.Replace("< i>", beginTag);
text = text.Replace("<i >", beginTag);
text = text.Replace("< I >", beginTag);
text = text.Replace("< I>", beginTag);
text = text.Replace("<I >", beginTag);
text = text.Replace("<i<", beginTag);
text = text.Replace("<I<", beginTag);
text = text.Replace("< / i >", endTag);
text = text.Replace("< /i>", endTag);
text = text.Replace("</ i>", endTag);
text = text.Replace("< /i >", endTag);
text = text.Replace("</i >", endTag);
text = text.Replace("</ i >", endTag);
text = text.Replace("< / i>", endTag);
text = text.Replace("</I>", endTag);
text = text.Replace("< / I >", endTag);
text = text.Replace("< /I>", endTag);
text = text.Replace("</ I>", endTag);
text = text.Replace("< /I >", endTag);
text = text.Replace("</I >", endTag);
text = text.Replace("</ I >", endTag);
text = text.Replace("< / I>", endTag);
text = text.Replace("</i<", endTag);
text = text.Replace("</I<", endTag);
text = text.Replace("<I>", beginTag);
text = text.Replace("</I>", endTag);
foreach (var endTagVariation in EndTagVariations)
{
text = text.Replace(endTagVariation, endTag);
}
text = text.Replace("</i> <i>", "_@_");
text = text.Replace(" _@_", "_@_");