diff --git a/src/MaaCore/Vision/Miscellaneous/DepotImageAnalyzer.cpp b/src/MaaCore/Vision/Miscellaneous/DepotImageAnalyzer.cpp index 03ddb88072..cf856ed3bd 100644 --- a/src/MaaCore/Vision/Miscellaneous/DepotImageAnalyzer.cpp +++ b/src/MaaCore/Vision/Miscellaneous/DepotImageAnalyzer.cpp @@ -320,12 +320,13 @@ int asst::DepotImageAnalyzer::match_quantity(const Rect& roi) digit_str.erase(m_pos, digit_str.size()); } + constexpr char Dot = '.'; if (digit_str.empty() || - !ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == '.'; })) { + !ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == Dot; })) { return 0; } - if (auto dot_pos = digit_str.find('.'); dot_pos != std::string::npos) { - if (dot_pos == 0 || dot_pos == digit_str.size() - 1) { + if (auto dot_pos = digit_str.find(Dot); dot_pos != std::string::npos) { + if (dot_pos == 0 || dot_pos == digit_str.size() - 1 || digit_str.find(Dot, dot_pos + 1) != std::string::npos) { return 0; } } diff --git a/src/MaaCore/Vision/Miscellaneous/StageDropsImageAnalyzer.cpp b/src/MaaCore/Vision/Miscellaneous/StageDropsImageAnalyzer.cpp index 69bad6eca2..a95ca36045 100644 --- a/src/MaaCore/Vision/Miscellaneous/StageDropsImageAnalyzer.cpp +++ b/src/MaaCore/Vision/Miscellaneous/StageDropsImageAnalyzer.cpp @@ -553,12 +553,13 @@ int asst::StageDropsImageAnalyzer::match_quantity(const Rect& roi, bool use_word digit_str.erase(k_pos, digit_str.size()); } + constexpr char Dot = '.'; if (digit_str.empty() || - !ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == '.'; })) { + !ranges::all_of(digit_str, [](const char& c) -> bool { return std::isdigit(c) || c == Dot; })) { return 0; } - if (auto dot_pos = digit_str.find('.'); dot_pos != std::string::npos) { - if (dot_pos == 0 || dot_pos == digit_str.size() - 1) { + if (auto dot_pos = digit_str.find(Dot); dot_pos != std::string::npos) { + if (dot_pos == 0 || dot_pos == digit_str.size() - 1 || digit_str.find(Dot, dot_pos + 1) != std::string::npos) { return 0; } }