Radarr/src/NzbDrone.Core/Parser/RegexReplace.cs

56 lines
1.5 KiB
C#

using System.Text.RegularExpressions;
namespace NzbDrone.Core.Parser
{
public class RegexReplace
{
private readonly Regex _regex;
private readonly string _replacementFormat;
private readonly MatchEvaluator _replacementFunc;
public RegexReplace(string pattern, string replacement, RegexOptions regexOptions)
{
_regex = new Regex(pattern, regexOptions);
_replacementFormat = replacement;
}
public RegexReplace(string pattern, MatchEvaluator replacement, RegexOptions regexOptions)
{
_regex = new Regex(pattern, regexOptions);
_replacementFunc = replacement;
}
public string Replace(string input)
{
if (_replacementFunc != null)
{
return _regex.Replace(input, _replacementFunc);
}
else
{
return _regex.Replace(input, _replacementFormat);
}
}
public bool TryReplace(ref string input)
{
var result = _regex.IsMatch(input);
if (_replacementFunc != null)
{
input = _regex.Replace(input, _replacementFunc);
}
else
{
input = _regex.Replace(input, _replacementFormat);
}
return result;
}
public override string ToString()
{
return _regex.ToString();
}
}
}