/// <summary>
/// Returns the expansion of the passed replacement pattern. For
/// example, if the replacement pattern is ?$1$2?, Result returns the concatenation
/// of Group(1).ToString() and Group(2).ToString().
/// </summary>
public virtual string Result(string replacement)
{
if (replacement == null)
{
throw new ArgumentNullException(nameof(replacement));
}
if (_regex == null)
{
throw new NotSupportedException(SR.NoResultOnFailed);
}
// Gets the weakly cached replacement helper or creates one if there isn't one already.
RegexReplacement repl = RegexReplacement.GetOrCreate(_regex._replref !, replacement, _regex.caps !, _regex.capsize, _regex.capnames !, _regex.roptions);
var vsb = new ValueStringBuilder(stackalloc char[ReplaceBufferSize]);
repl.ReplacementImpl(ref vsb, this);
return(vsb.ToString());
}