You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.4 KiB
51 lines
1.4 KiB
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;
|
|
}
|
|
}
|
|
}
|