Beispiel #1
0
        public LexicalMatch MatchBeginning(string value)
        {
            if (null == value)
            {
                throw new ArgumentNullException("value");
            }

            if (0 == value.Length)
            {
                return(null);
            }

            var result = Match(value);

            if (null != result)
            {
                return(result);
            }

            var substring = new MutableString(value);
            var clone     = substring.Clone();

#if NET20
            foreach (var word in IEnumerableExtensionMethods.Reverse(substring.ToString().Split(' ')))
#else
            foreach (var word in substring.ToString().Split(' ').Reverse())
#endif
            {
                if (0 == word.Length)
                {
                    continue;
                }

                substring.RemoveFromEnd(word).Trim();
                result = Match(substring);
                if (null == result)
                {
                    continue;
                }

                result.Suffix = clone.Suffix(substring).Trim();
                return(result);
            }

            return(null);
        }