WikiFunctions.Tools.FirstDifference C# (CSharp) Method

FirstDifference() public static method

Returns index of first character different between strings
public static FirstDifference ( string a, string b ) : int
a string First string
b string Second string
return int
        public static int FirstDifference(string a, string b)
        {
            for (int i = 0; i < Math.Min(a.Length, b.Length); i++)
            {
                if (a[i] != b[i]) return i;
            }

            return Math.Min(a.Length, b.Length);
        }

Usage Example

Beispiel #1
0
        public static void MakeLangSpecificRegexes()
        {
            TemplateStart = Variables.NamespacesCaseInsensitive[10];
            if (TemplateStart[0] == '(')
            {
                TemplateStart = TemplateStart.Insert(TemplateStart.Length - 1, "|");
            }
            else
            {
                TemplateStart = "(?:" + TemplateStart + "|)";
            }
            TemplateStart = @"\{\{\s*" + TemplateStart;

            Category = new Regex(@"\[\[" + Variables.NamespacesCaseInsensitive[14] + @"(.*?)\]\]|<[Gg]allery\b([^>]*?)>[\s\S]*?</ ?[Gg]allery>", RegexOptions.Compiled);
            Images   = new Regex(@"\[\[" + Variables.NamespacesCaseInsensitive[6] + @"(.*?)\]\]|<[Gg]allery\b([^>]*?)>[\s\S]*?</ ?[Gg]allery>", RegexOptions.Compiled);
            Stub     = new Regex(@"{{.*?" + Variables.Stub + @"}}", RegexOptions.Compiled);
            PossiblyCommentedStub = new Regex(@"(<!-- ?\{\{[^}]*?" + Variables.Stub + @"\b\}\}.*?-->|\{\{[^}]*?" + Variables.Stub + @"\}\})", RegexOptions.Compiled);
            TemplateCall          = new Regex(TemplateStart + @"\s*([^\]\|]*)\s*(.*)}}", RegexOptions.Compiled | RegexOptions.Singleline);

            string s;

            switch (Variables.LangCode)
            {
            case LangCodeEnum.ar:
                s = "(?:تحويل|REDIRECT)";
                break;

            case LangCodeEnum.bg:
                s = "(?:redirect|пренасочване|виж)";
                break;

            case LangCodeEnum.fi:
                s = "(?:OHJAUS|UUDELLEENOHJAUS|REDIRECT)";
                break;

            case LangCodeEnum.he:
                s = "(?:הפניה|REDIRECT)";
                break;

            case LangCodeEnum.Is:
                s = "(?:tilvísun|TILVÍSUN|REDIRECT)";
                break;

            case LangCodeEnum.nl:
                s = "(?:REDIRECT|DOORVERWIJZING)";
                break;

            case LangCodeEnum.ru:
                s = "(?:REDIRECT|ПЕРЕНАПРАВЛЕНИЕ|ПЕРЕНАПР)";
                break;

            case LangCodeEnum.sk:
                s = "(?:redirect|presmeruj)";
                break;

            case LangCodeEnum.uk:
                s = "(?:REDIRECT|ПЕРЕНАПРАВЛЕННЯ|ПЕРЕНАПР)";
                break;

            default:
                s = "REDIRECT";
                break;
            }
            Redirect = new Regex(@"^#" + s + @".*?\[\[\s*:?\s*([^\|]*?)\s*(|\|.*?)]\]", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline);

            if (Variables.LangCode == LangCodeEnum.ru)
            {
                Disambigs = new Regex(TemplateStart + @"([Dd]isambiguation|[Dd]isambig|[Нн]еоднозначность)}}", RegexOptions.Compiled);
            }
            else
            {
                Disambigs = new Regex(@"{{([234]CC|[Dd]isambig|[Gg]eodis|[Hh]ndis|[Ss]urname|[Nn]umberdis|[Rr]oaddis|[Ll]etter-disambig)}}", RegexOptions.Compiled);
            }

            s = "(?i:defaultsort)";
            if (Variables.LangCode == LangCodeEnum.en)
            {
                s = "(?:(?i:defaultsort|lifetime|BIRTH-DEATH-SORT)|BD)";
            }

            Defaultsort = new Regex(TemplateStart + s + @"\s*[:|](?<key>[^\}]*)}}",
                                    RegexOptions.Compiled | RegexOptions.ExplicitCapture);

            //if (Variables.URL == Variables.URLLong)
            //    s = Regex.Escape(Variables.URL);
            //else
            {
                int pos = Tools.FirstDifference(Variables.URL, Variables.URLLong);
                s  = Regex.Escape(Variables.URLLong.Substring(0, pos));
                s += "(?:" + Regex.Escape(Variables.URLLong.Substring(pos)) + @"index\.php(?:\?title=|/)|"
                     + Regex.Escape(Variables.URL.Substring(pos)) + "/wiki/" + ")";
            }
            ExtractTitle = new Regex("^" + s + "([^?&]*)$", RegexOptions.Compiled);
        }
All Usage Examples Of WikiFunctions.Tools::FirstDifference
Tools