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 + "$"); }
/// <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); }