forked from Mirrorlandia_minetest/minetest
Add removeStringEnd()
This commit is contained in:
parent
26666bb36f
commit
e71262463f
@ -35,6 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
#include "mapsector.h"
|
#include "mapsector.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "utility_string.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Asserts that the exception occurs
|
Asserts that the exception occurs
|
||||||
@ -120,6 +121,11 @@ struct TestUtilities
|
|||||||
assert(is_yes("YeS") == true);
|
assert(is_yes("YeS") == true);
|
||||||
assert(is_yes("") == false);
|
assert(is_yes("") == false);
|
||||||
assert(is_yes("FAlse") == false);
|
assert(is_yes("FAlse") == false);
|
||||||
|
const char *ends[] = {"abc", "c", "bc", NULL};
|
||||||
|
assert(removeStringEnd("abc", ends) == "");
|
||||||
|
assert(removeStringEnd("bc", ends) == "b");
|
||||||
|
assert(removeStringEnd("12c", ends) == "12");
|
||||||
|
assert(removeStringEnd("foo", ends) == "");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -31,5 +31,20 @@ static inline std::string padStringRight(std::string s, size_t len)
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ends: NULL- or ""-terminated array of strings
|
||||||
|
// Returns "" if no end could be removed.
|
||||||
|
static inline std::string removeStringEnd(const std::string &s, const char *ends[])
|
||||||
|
{
|
||||||
|
const char **p = ends;
|
||||||
|
for(; (*p) && (*p)[0] != '\0'; p++){
|
||||||
|
std::string end = *p;
|
||||||
|
if(s.size() < end.size())
|
||||||
|
continue;
|
||||||
|
if(s.substr(s.size()-end.size(), end.size()) == end)
|
||||||
|
return s.substr(0, s.size() - end.size());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user