Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Replace() [1/13]

static string System.Text.RegularExpressions.Regex.Replace ( MatchEvaluator evaluator,
Regex regex,
string input,
int count,
int startat )
inlinestaticprivate

Definition at line 602 of file Regex.cs.

603 {
604 if (evaluator == null)
605 {
606 ThrowHelper.ThrowArgumentNullException(ExceptionArgument.evaluator);
607 }
608 if (count < -1)
609 {
610 ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.count, ExceptionResource.CountTooSmall);
611 }
612 if ((uint)startat > (uint)input.Length)
613 {
614 ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.startat, ExceptionResource.BeginIndexNotNegative);
615 }
616 if (count == 0)
617 {
618 return input;
619 }
620 (SegmentStringBuilder, MatchEvaluator, int, string, int) state2 = (SegmentStringBuilder.Create(), evaluator, 0, input, count);
621 if (!regex.RightToLeft)
622 {
623 regex.Run<(SegmentStringBuilder, MatchEvaluator, int, string, int)>(input, startat, ref state2, delegate(ref (SegmentStringBuilder segments, MatchEvaluator evaluator, int prevat, string input, int count) state, Match match)
624 {
625 state.segments.Add(state.input.AsMemory(state.prevat, match.Index - state.prevat));
626 state.prevat = match.Index + match.Length;
627 state.segments.Add(state.evaluator(match).AsMemory());
628 return --state.count != 0;
629 }, reuseMatchObject: false);
630 if (state2.Item1.Count == 0)
631 {
632 return input;
633 }
634 state2.Item1.Add(input.AsMemory(state2.Item3, input.Length - state2.Item3));
635 }
636 else
637 {
638 state2.Item3 = input.Length;
639 regex.Run<(SegmentStringBuilder, MatchEvaluator, int, string, int)>(input, startat, ref state2, delegate(ref (SegmentStringBuilder segments, MatchEvaluator evaluator, int prevat, string input, int count) state, Match match)
640 {
641 state.segments.Add(state.input.AsMemory(match.Index + match.Length, state.prevat - match.Index - match.Length));
642 state.prevat = match.Index;
643 state.segments.Add(state.evaluator(match).AsMemory());
644 return --state.count != 0;
645 }, reuseMatchObject: false);
646 if (state2.Item1.Count == 0)
647 {
648 return input;
649 }
650 state2.Item1.Add(input.AsMemory(0, state2.Item3));
651 state2.Item1.AsSpan().Reverse();
652 }
653 return state2.Item1.ToString();
654 }
void Add(TKey key, TValue value)
static Match Match(string input, string pattern)
Definition Regex.cs:439
delegate string MatchEvaluator(Match match)

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Text.RegularExpressions.count, System.Text.SegmentStringBuilder.Create(), System.Runtime.Serialization.Dictionary, System.Text.RegularExpressions.evaluator, System.Text.RegularExpressions.input, System.match, System.Text.RegularExpressions.MatchEvaluator(), System.Text.RegularExpressions.startat, System.state, System.Text.RegularExpressions.ThrowHelper.ThrowArgumentNullException(), and System.Text.RegularExpressions.ThrowHelper.ThrowArgumentOutOfRangeException().