string Replace(string input, MatchAppendEvaluator evaluator, int count, int startat) { StringBuilder result = new StringBuilder(); int ptr = startat; int counter = count; result.Append(input, 0, ptr); Match m = Match(input, startat); while (m.Success) { if (count != -1) { if (counter-- <= 0) { break; } } result.Append(input, ptr, m.Index - ptr); evaluator(m, result); ptr = m.Index + m.Length; m = m.NextMatch(); } if (ptr == 0) { return(input); } result.Append(input, ptr, input.Length - ptr); return(result.ToString()); }
internal string LTRReplace(Regex regex, string input, MatchAppendEvaluator evaluator, int count, int startat, bool needs_groups_or_captures) { this.needs_groups_or_captures = needs_groups_or_captures; Match match = Scan(regex, input, startat, input.Length); if (!match.Success) { return(input); } StringBuilder stringBuilder = new StringBuilder(input.Length); int num = startat; int num2 = count; stringBuilder.Append(input, 0, num); while (count == -1 || num2-- > 0) { if (match.Index < num) { throw new SystemException("how"); } stringBuilder.Append(input, num, match.Index - num); evaluator(match, stringBuilder); num = match.Index + match.Length; match = match.NextMatch(); if (!match.Success) { break; } } stringBuilder.Append(input, num, input.Length - num); return(stringBuilder.ToString()); }
internal IString LTRReplace(Regex regex, IString input, MatchAppendEvaluator evaluator, int count, int startat, bool needs_groups_or_captures) { this.needs_groups_or_captures = needs_groups_or_captures; Match m = Scan(regex, input, startat, input.Length); if (!m.Success) { return(input); } StringBuilder result = new StringBuilder(input.Length * 2); int ptr = startat; int counter = count; input.AppendTo(result, 0, ptr); do { if (count != -1) { if (counter-- <= 0) { break; } } if (m.Index < ptr) { throw new SystemException("how"); } int appendLen = m.Index - ptr; input.AppendTo(result, ptr, appendLen); evaluator(m, result); ptr = m.Index + m.Length; m = m.NextMatch(); } while (m.Success); input.AppendTo(result, ptr, input.Length - ptr); return(new WrappedStringBuilder(result)); }
internal string LTRReplace(Regex regex, string input, MatchAppendEvaluator evaluator, int count, int startat) { return(LTRReplace(regex, input, evaluator, count, startat, true)); }
internal string LTRReplace (Regex regex, string input, MatchAppendEvaluator evaluator, int count, int startat, bool needs_groups_or_captures) { this.needs_groups_or_captures = needs_groups_or_captures; Match m = Scan (regex, input, startat, input.Length); if (!m.Success) return input; StringBuilder result = new StringBuilder (input.Length); int ptr = startat; int counter = count; result.Append (input, 0, ptr); do { if (count != -1) if (counter-- <= 0) break; if (m.Index < ptr) throw new SystemException ("how"); result.Append (input, ptr, m.Index - ptr); evaluator (m, result); ptr = m.Index + m.Length; m = m.NextMatch (); } while (m.Success); result.Append (input, ptr, input.Length - ptr); return result.ToString (); }
internal string LTRReplace (Regex regex, string input, MatchAppendEvaluator evaluator, int count, int startat) { return LTRReplace (regex, input, evaluator, count, startat, true); }
string Replace (string input, MatchAppendEvaluator evaluator, int count, int startat) { StringBuilder result = new StringBuilder (); int ptr = startat; int counter = count; result.Append (input, 0, ptr); Match m = Match (input, startat); while (m.Success) { if (count != -1) if(counter -- <= 0) break; result.Append (input, ptr, m.Index - ptr); evaluator (m, result); ptr = m.Index + m.Length; m = m.NextMatch (); } if (ptr == 0) return input; result.Append (input, ptr, input.Length - ptr); return result.ToString (); }
internal string LTRReplace(Regex regex, string input, MatchAppendEvaluator evaluator, int count, int startat) { return(LTRReplace(regex, input, evaluator, count, startat, needs_groups_or_captures: true)); }