diff --git a/src/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs b/src/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs index 413e56512..f0ff44c44 100644 --- a/src/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerSearchTests/SearchDefinitionFixture.cs @@ -12,6 +12,7 @@ public class SearchDefinitionFixture : CoreTest [TestCase("Star Wars: The Clone Wars", Result = "Star+Wars+The+Clone+Wars")] [TestCase("Hawaii Five-0", Result = "Hawaii+Five+0")] [TestCase("Franklin & Bash", Result = "Franklin+and+Bash")] + [TestCase("Chicago P.D.", Result = "Chicago+PD")] public string should_replace_some_special_characters(string input) { Subject.SceneTitles = new List { input }; diff --git a/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs b/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs index fc3be82a5..68ecb9978 100644 --- a/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs +++ b/src/NzbDrone.Core/IndexerSearch/Definitions/SearchCriteriaBase.cs @@ -9,6 +9,7 @@ namespace NzbDrone.Core.IndexerSearch.Definitions { public abstract class SearchCriteriaBase { + private static readonly Regex SpecialCharacter = new Regex(@"[`'.]", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex NonWord = new Regex(@"[\W]", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex BeginningThe = new Regex(@"^the\s", RegexOptions.IgnoreCase | RegexOptions.Compiled); @@ -30,11 +31,8 @@ public static string GetQueryTitle(string title) var cleanTitle = BeginningThe.Replace(title, String.Empty); - cleanTitle = cleanTitle - .Replace("&", "and") - .Replace("`", "") - .Replace("'", ""); - + cleanTitle = cleanTitle.Replace("&", "and"); + cleanTitle = SpecialCharacter.Replace(cleanTitle, ""); cleanTitle = NonWord.Replace(cleanTitle, "+"); //remove any repeating +s