public bool Validate(string text, MaskRules rule) { bool v = true; if (String.IsNullOrEmpty(text)) return true; var validCharacters = ValidationRules.FirstOrDefault (x => x.Operation == Validators.ONLYCHARS); if (ValidationRules != null) { v = System.Text.RegularExpressions.Regex.Match (text, validCharacters.Arg).Success; ValidationError (validCharacters.ErrorMessage); } if (v) { var max = ValidationRules.FirstOrDefault (x => x.Operation == Validators.MAX); if (max != null && text.Length > max.ArgAsInt) { v = false; ValidationError (max.ErrorMessage); } } if (v && rule != null && rule.Rules != null) { var startC = rule.Rules.FirstOrDefault (x => x.Operation == Validators.STARTC); if (startC != null) { if (startC.Arg.Length > text.Length - rule.Start) { v = String.Compare (text.Substring (rule.Start), startC.Arg.Substring (0, text.Length - rule.Start), (startC.CaseCheck == false ? StringComparison.OrdinalIgnoreCase : StringComparison.CurrentCulture)) == 0; ValidationError (startC.ErrorMessage); } else if (startC.Arg.Length > text.Length - rule.Start) { v = String.Compare (text.Substring (rule.Start, startC.Arg.Length), startC.Arg, (startC.CaseCheck == false ? StringComparison.OrdinalIgnoreCase : StringComparison.CurrentCulture)) == 0; ValidationError (startC.ErrorMessage); } } var endC = rule.Rules.FirstOrDefault (x => x.Operation == Validators.ENDC); if (endC != null) { var d = rule.End - endC.Arg.Length; if (text.Length + endC.Arg.Length > rule.End) { var test = text.Substring (d); v = String.Compare (test, endC.Arg.Substring (0, test.Length), (endC.CaseCheck == false ? StringComparison.OrdinalIgnoreCase : StringComparison.CurrentCulture)) == 0; ValidationError (endC.ErrorMessage); } } } return v; }
public string ApplyMask(string text, MaskRules rule, bool IsFirstLoad = false) { string temp = ""; if (rule.Mask != "") { // adjust length of greater than last mask entry if (text.Length > this.MaxLengthFromMask) { text = text.Substring (0, this.MaxLengthFromMask); } var test = ""; var result = System.Text.RegularExpressions.Regex.Match(rule.Mask, CV_defaultMask); temp = rule.Mask; do { if (System.Text.RegularExpressions.Regex.Match(result.Value, CV_defaultOneMask).Success || String.IsNullOrEmpty(result.Value)) { // result is an empty string. return. done parsing if (String.IsNullOrEmpty(result.Value)) break; // end match var obj = ConvertMatch(result.Value); test += text.Substring(obj[0]); if (IsFirstLoad && Validate(text) == false) { return ""; } temp = temp.Replace(result.Value, text.Substring(obj[0])); break; } else { var obj = ConvertMatch(result.Value); if (obj[0] + obj[1] >= text.Length) { test += text.Substring(obj[0]); if (IsFirstLoad && Validate(text) == false) { return ""; } var t = result.Value[result.Value.Length-1]; temp = temp.Replace(result.Value, test); } else { test += text.Substring(obj[0], obj[1]); if (IsFirstLoad && Validate(text) == false) { return ""; } temp = temp.Replace(result.Value, test); } result = result.NextMatch(); } } while (true); return temp; } return text; }
public string ReFractor(string text, MaskRules rule) { string temp = ""; if (rule.Mask != "") { var result = System.Text.RegularExpressions.Regex.Match(rule.Mask, CV_defaultMask); temp = rule.Mask; do { if (System.Text.RegularExpressions.Regex.Match(result.Value, CV_defaultOneMask).Success) { // end match var obj = ConvertMatch(result.Value); temp = temp.Replace(result.Value, text.Substring(obj[0])); break; } else { var obj = ConvertMatch(result.Value); temp = temp.Replace(result.Value, text.Substring(obj[0], obj[1])); result = result.NextMatch(); } } while (true); return temp; } return text; }