public static string FixMainArticle(string articleText)
{
// Performance: split article to check each line in text, filter to lines containing colon then check first 20 characters of line against regex
List<string> articleTextLines = articleText.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
articleTextLines = articleTextLines.FindAll(s => s.Contains(":"));
articleTextLines = articleTextLines.Select(s => s.Substring(0, Math.Min(s.Length, 20))).ToList();
articleTextLines = Tools.DeduplicateList(articleTextLines);
if (articleTextLines.Any(s => SeeAlsoMainArticleQuick.IsMatch(s)))
{
articleText = SeeAlsoLink.Replace(articleText,
m => m.Groups[2].Value.Length == 0
? "{{See also|" + m.Groups[1].Value + "}}"
: "{{See also|" + m.Groups[1].Value + "|l1=" + m.Groups[3].Value + "}}");
articleText = RegexMainArticle.Replace(articleText,
m => m.Groups[2].Value.Length == 0
? "{{Main|" + m.Groups[1].Value + "}}"
: "{{Main|" + m.Groups[1].Value + "|l1=" + m.Groups[3].Value + "}}");
}
return articleText;
}