コード例 #1
0
        string BuildExtruderRegExp(char blank, bool saveLiteral)
        {
            string str  = string.Empty;
            string str2 = string.Format(CultureInfo.InvariantCulture, ((blank == '^') || (blank == '\\')) ? @"[\{0}]" : "[{0}]", new object[] { blank });

            for (int i = 0; i < this.Count; i++)
            {
                LegacyMaskPrimitive primitive = this[i];
                if (primitive.IsLiteral)
                {
                    if (saveLiteral)
                    {
                        str = str + "(" + primitive.CapturingExpression + ")";
                    }
                }
                else
                {
                    string format = "(?<element{4}>(({0})";
                    if (!Regex.IsMatch(blank.ToString(), primitive.CapturingExpression))
                    {
                        format = format + "|({1})";
                    }
                    format = format + ")";
                    if ((primitive.MinMatches != 1) || (primitive.MaxMatches != 1))
                    {
                        format = format + "{{{2},{3}}}";
                    }
                    format = format + ")";
                    str    = str + string.Format(CultureInfo.InvariantCulture, format, new object[] { primitive.CapturingExpression, str2, primitive.MinMatches, primitive.MaxMatches, i });
                }
            }
            return("^" + str + "$");
        }
コード例 #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="editText"></param>
        /// <param name="blank"></param>
        /// <param name="saveLiteral"></param>
        /// <returns></returns>
        public string[] GetElementsFromEditText(string editText, char blank, bool saveLiteral)
        {
            string pattern = this.BuildExtruderRegExp(blank, saveLiteral);
            Match  match   = Regex.Match(editText, pattern);

            if (!match.Success || (match.Value != editText))
            {
                return(null);
            }
            string[] strArray = new string[this.Count];
            for (int i = 0; i < this.Count; i++)
            {
                string str2;
                LegacyMaskPrimitive primitive = this[i];
                if (primitive.IsLiteral)
                {
                    str2 = string.Empty;
                }
                else
                {
                    str2 = match.Groups[string.Format(CultureInfo.InvariantCulture, "element{0}", new object[] { i })].Value.TrimEnd(new char[] { blank });
                    if (!primitive.IsAcceptableStrong(blank))
                    {
                        str2 = str2.Replace(blank.ToString(), string.Empty);
                    }
                }
                strArray[i] = str2;
            }
            return(strArray);
        }