add utils::trim() function to remove leading and trailing whitespace from string
This commit is contained in:
@ -348,6 +348,19 @@ tagint utils::tnumeric(const char *file, int line, const char *str,
|
|||||||
return ATOTAGINT(str);
|
return ATOTAGINT(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
Return string without leading or trailing whitespace
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
std::string utils::trim(const std::string & line) {
|
||||||
|
int beg = re_match(line.c_str(),"\\S+");
|
||||||
|
int end = re_match(line.c_str(),"\\s+$");
|
||||||
|
if (beg < 0) beg = 0;
|
||||||
|
if (end < 0) end = line.size();
|
||||||
|
|
||||||
|
return line.substr(beg,end-beg);
|
||||||
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
Return string without trailing # comment
|
Return string without trailing # comment
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|||||||
@ -143,6 +143,13 @@ namespace LAMMPS_NS {
|
|||||||
tagint tnumeric(const char *file, int line, const char *str,
|
tagint tnumeric(const char *file, int line, const char *str,
|
||||||
bool do_abort, LAMMPS *lmp);
|
bool do_abort, LAMMPS *lmp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Trim leading and trailing whitespace. Like TRIM() in Fortran.
|
||||||
|
* \param line string that should be trimmed
|
||||||
|
* \return new string without whitespace (string)
|
||||||
|
*/
|
||||||
|
std::string trim(const std::string &line);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Trim anything from '#' onward
|
* \brief Trim anything from '#' onward
|
||||||
* \param line string that should be trimmed
|
* \param line string that should be trimmed
|
||||||
|
|||||||
@ -25,6 +25,24 @@ using ::testing::EndsWith;
|
|||||||
using ::testing::Eq;
|
using ::testing::Eq;
|
||||||
using ::testing::StrEq;
|
using ::testing::StrEq;
|
||||||
|
|
||||||
|
TEST(Utils, trim)
|
||||||
|
{
|
||||||
|
auto trimmed = utils::trim("\t some text");
|
||||||
|
ASSERT_THAT(trimmed, StrEq("some text"));
|
||||||
|
|
||||||
|
trimmed = utils::trim("some text \r\n");
|
||||||
|
ASSERT_THAT(trimmed, StrEq("some text"));
|
||||||
|
|
||||||
|
trimmed = utils::trim("\v some text \f");
|
||||||
|
ASSERT_THAT(trimmed, StrEq("some text"));
|
||||||
|
|
||||||
|
trimmed = utils::trim(" some\t text ");
|
||||||
|
ASSERT_THAT(trimmed, StrEq("some\t text"));
|
||||||
|
|
||||||
|
trimmed = utils::trim(" \t\n ");
|
||||||
|
ASSERT_THAT(trimmed, StrEq(""));
|
||||||
|
}
|
||||||
|
|
||||||
TEST(Utils, trim_comment)
|
TEST(Utils, trim_comment)
|
||||||
{
|
{
|
||||||
auto trimmed = utils::trim_comment("some text # comment");
|
auto trimmed = utils::trim_comment("some text # comment");
|
||||||
|
|||||||
Reference in New Issue
Block a user