17 char endliteralDelimiter =
'\0';
19 while (str[iChar] ==
' ' || str[iChar] ==
'\t')
25 while (iChar < str.size()) {
28 bool quotedText =
false;
29 if (str[iChar] ==
'\"') {
31 endliteralDelimiter =
'\"';
33 iLast = str.find_first_of(
'\"', iChar);
34 }
else if (str[iChar] ==
'{') {
36 endliteralDelimiter =
'}';
38 iLast = str.find_first_of(
'}', iChar);
40 iLast = str.find_first_of(delimiter, iChar + 1);
42 if (iLast != std::string::npos) {
44 token = str.substr(iChar, iLast - iChar);
45 if (str[iLast] == endliteralDelimiter) {
53 throw std::runtime_error(std::string(
"[GGSStringUtils::Tokenize] Missing closing ") + endliteralDelimiter);
56 token = str.substr(iChar);
59 tokens.push_back(token);
61 iChar = str.find_first_not_of(delimiter, iLast);
68 std::string retStr = str;
69 retStr.erase(retStr.begin(), std::find_if(retStr.begin(), retStr.end(),
70 [](
int ch) {
return !(std::isblank(static_cast<unsigned int>(ch))); }));
71 retStr.erase(std::find_if(retStr.rbegin(), retStr.rend(),
72 [](
int ch) {
return !(std::isblank(static_cast<unsigned int>(ch))); })
79 std::string trimmedStr =
Trim(str);
80 if (trimmedStr.empty() || ((!isdigit(trimmedStr[0])) && (trimmedStr[0] !=
'-') && (trimmedStr[0] !=
'+')))
82 for (
unsigned int iChar = 1; iChar < trimmedStr.size(); iChar++) {
83 if (!isdigit(trimmedStr[iChar])) {
91 std::string trimmedStr =
Trim(str);
92 if (trimmedStr.empty() || ((!isdigit(trimmedStr[0])) && (trimmedStr[0] !=
'-') && (trimmedStr[0] !=
'+')))
94 bool hasPoint =
false;
96 for (
unsigned int iChar = 1; iChar < trimmedStr.size(); iChar++) {
97 if (!isdigit(trimmedStr[iChar])) {
98 if (trimmedStr[iChar] ==
'.') {
103 }
else if (trimmedStr[iChar] ==
'e') {
110 if (iChar >= trimmedStr.size() ||
111 (!isdigit(trimmedStr[iChar]) && (trimmedStr[iChar] !=
'-') && (trimmedStr[iChar] !=
'+'))) {
123 if (str.find(
'*') != std::string::npos || str.find(
'?') != std::string::npos) {
131 static std::string regexStr;
133 std::string::size_type n = 0;
134 while ((n = regexStr.find(
".", n)) != std::string::npos) {
135 regexStr.replace(n, 1,
"\\.");
139 while ((n = regexStr.find(
"*", n)) != std::string::npos) {
140 regexStr.replace(n, 1,
".*");
143 std::replace(regexStr.begin(), regexStr.end(),
'?',
'.');
std::string RegexFromGlob(const std::string &str)
Build a regex starting from a glob expression.
Tokens Tokenize(const std::string &str, char delimiter= ' ')
Extracts words from a string.
bool IsGlobExpression(const std::string &str)
Check if the given string is a glob expression.
bool IsInteger(const std::string &str)
Checks if a string is an a integer.
bool IsReal(const std::string &str)
Checks if a string is a real number.
std::string Trim(const std::string &str)
Trims a string.