diff --git a/include/Nazara/Core/StringExt.inl b/include/Nazara/Core/StringExt.inl index 50e3c12c1..4ef040b95 100644 --- a/include/Nazara/Core/StringExt.inl +++ b/include/Nazara/Core/StringExt.inl @@ -26,12 +26,12 @@ namespace Nz inline bool IsNumber(std::string_view str) { + if (!str.empty() && str.front() == '-') + str.remove_prefix(1); + if (str.empty()) return false; - if (str.front() == '-') - str.remove_prefix(1); - return std::find_if(str.begin(), str.end(), [](unsigned char c) { return !std::isdigit(c); }) == str.end(); } diff --git a/tests/UnitTests/Engine/Core/StringExtTest.cpp b/tests/UnitTests/Engine/Core/StringExtTest.cpp index 66c8736cd..ce22437b0 100644 --- a/tests/UnitTests/Engine/Core/StringExtTest.cpp +++ b/tests/UnitTests/Engine/Core/StringExtTest.cpp @@ -69,6 +69,8 @@ SCENARIO("String", "[CORE][STRING]") { CHECK(Nz::IsNumber("123456")); CHECK(Nz::IsNumber("-123456")); + CHECK_FALSE(Nz::IsNumber("")); + CHECK_FALSE(Nz::IsNumber("-")); CHECK_FALSE(Nz::IsNumber("123 ")); CHECK_FALSE(Nz::IsNumber("Nazara Engine")); CHECK_FALSE(Nz::IsNumber("12345Nazara Engine"));