diff --git a/src/DSUtil/text.cpp b/src/DSUtil/text.cpp index b288c6dfee2..ad0eaa07766 100644 --- a/src/DSUtil/text.cpp +++ b/src/DSUtil/text.cpp @@ -23,6 +23,8 @@ #include #include "text.h" #include +#include +#include DWORD CharSetToCodePage(DWORD dwCharSet) { @@ -354,5 +356,15 @@ int LastIndexOfCString(const CString& text, const CString& pattern) { bool IsNameSimilar(const CString& title, const CString& fileName) { if (fileName.Find(title.Left(25)) > -1) return true; + CT2CW t(title); + std::wstring tit(t); + const std::wregex reg(LR"([^[:print:]]|[/\\:\*\?"<>\|])", std::regex_constants::ECMAScript); + if (!std::regex_search(tit, reg)) return false; + const std::array arr = { L"_", L"-", L"." }; + for (auto& r : arr) { + std::wstring temp = std::regex_replace(tit, reg, r); + CStringW newtitle(temp.c_str()); + if (fileName.Find(newtitle.Left(25)) > -1) return true; + } return false; }