#2018 CSV import. Fix decimal point/locale

This commit is contained in:
Bjørn Erik Jensen
2017-11-24 09:57:03 +01:00
parent 11100fb6e0
commit 28db4c6e22
7 changed files with 36 additions and 27 deletions

View File

@@ -32,15 +32,17 @@ std::string RiaStdStringTools::trimString(const std::string& s)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaStdStringTools::isNumber(const std::string& s)
bool RiaStdStringTools::isNumber(const std::string& s, char decimalPoint)
{
if (s.size() == 0) return false;
if (findCharMatchCount(s, '.') > 1) return false;
if (findCharMatchCount(s, decimalPoint) > 1) return false;
if (findCharMatchCount(s, '-') > 1) return false;
if (findCharMatchCount(s, 'e') > 1) return false;
if (findCharMatchCount(s, 'E') > 1) return false;
return (s.find_first_not_of("0123456789.eE-") == std::string::npos);
std::string matchChars("0123456789eE-");
matchChars.append(1, decimalPoint);
return (s.find_first_not_of(matchChars) == std::string::npos);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -31,7 +31,7 @@ class RiaStdStringTools
{
public:
static std::string trimString(const std::string& s);
static bool isNumber(const std::string& s);
static bool isNumber(const std::string& s, char decimalPoint);
static int toInt(const std::string& s);
static double toDouble(const std::string& s);