54 for (
unsigned int i = 0; i < s.size(); i++)
57 if (c !=
' ' && c !=
'\n' && c !=
'\t')
68 for (
size_t i = 0; i < s.size(); i++)
70 result +=
static_cast<char>(toupper(static_cast<int>(s[i])));
80 for (
size_t i = 0; i < s.size(); i++)
82 result +=
static_cast<char>(tolower(static_cast<int>(s[i])));
106 for (
unsigned int i = 0; i < st.size(); i++)
108 if (isWhiteSpaceCharacter(st[i]))
110 st.erase(st.begin() + i);
126 while (st.size() > 0 && isWhiteSpaceCharacter(st[0]))
128 st.erase(st.begin());
142 while (st.size() > 0 && isWhiteSpaceCharacter(st[st.size() - 1]))
144 st.erase(st.end() - 1);
155 return removeFirstWhiteSpaces(removeLastWhiteSpaces(s));
174 for (
unsigned int i = 0; i < st.size(); i++)
176 if (isNewLineCharacter(st[i]))
178 st.erase(st.begin() + i);
194 while (st.size() > 0 && isNewLineCharacter(st[st.size() - 1]))
196 st.erase(st.end() - 1);
207 if (c ==
'0' || c ==
'1' || c ==
'2' || c ==
'3' || c ==
'4'
208 || c ==
'5' || c ==
'6' || c ==
'7' || c ==
'8' || c ==
'9')
221 if (s[0] ==
'-') i = 1;
222 for (; i < s.size(); ++i)
227 else if (c == scientificNotation) {
229 if (i == s.size() - 1)
return false;
232 if (i == s.size() - 1)
return false;
233 if (sepCount == 0) sepCount = 1;
234 }
else if (!isDecimalNumber(c))
236 if (sepCount > 1 || sciCount > 1)
248 if (s[0] ==
'-') i = 1;
249 for (; i < s.size(); ++i)
252 if (c == scientificNotation) {
254 if (i == s.size() - 1)
return false;
256 if (c ==
'-')
return false;
257 }
else if (!isDecimalNumber(c))
288 oss << setprecision(precision) << d;
296 if (!isDecimalInteger(s))
throw Exception(
"TextTools::toInt(). Invalid number specification: " + s);
297 istringstream iss(s);
307 if (!isDecimalNumber(s))
throw Exception(
"TextTools::toDouble(). Invalid number specification: " + s);
308 istringstream iss(s);
318 if (s.size() > newSize)
319 return s.substr(0, newSize);
321 return s + string(newSize - s.size(), fill);
328 if (s.size() > newSize)
329 return s.substr(s.size() - newSize);
331 return string(newSize - s.size(), fill) + s;
340 while (tmp.size() > n)
342 v.push_back(tmp.substr(0, n));
357 for (
unsigned int i = 0; i < s.size(); i++)
360 if (current == blockBeginning)
363 t += s.substr(begPos, i - begPos);
365 else if (current == blockEnding)
372 else if (blockCount < 0)
373 throw Exception(
"TextTools::removeSubstrings(). " +
374 string(
"Ending block character without corresponding beginning one at position ") + toString((
int)i) +
".");
377 t += s.substr(begPos);
383 std::string
TextTools::removeSubstrings(
const std::string& s,
char blockBeginning,
char blockEnding, std::vector<string>& exceptionsBeginning, std::vector<string>& exceptionsEnding)
389 for (
size_t i = 0; i < s.size(); i++)
392 if (current == blockBeginning)
395 for (
size_t j = 0; j < exceptionsBeginning.size(); j++)
397 size_t pos = exceptionsBeginning[j].find(blockBeginning);
398 if (pos != string::npos) {
399 size_t left = i - pos;
400 size_t right = i + exceptionsBeginning[j].length() - pos;
401 if ((right < s.length() - 1) && (hasSubstring (s.substr(left, right), exceptionsBeginning[j])))
411 t += s.substr(begPos, i - begPos);
414 else if ( (current == blockEnding) && (blockCount > 0) )
416 for (
size_t j = 0; j < exceptionsEnding.size(); j++)
418 size_t pos = exceptionsEnding[j].find(blockEnding);
419 if (pos != string::npos) {
420 size_t left = i - pos;
421 size_t right = i + exceptionsEnding[j].length() - pos;
422 if ((right < s.length() - 1 ) && (hasSubstring (s.substr(left, right), exceptionsEnding[j])))
433 else if (blockCount < 0)
434 throw Exception(
"TextTools::removeSubstrings(). " +
435 string(
"Ending block character without corresponding beginning one at position ") + toString((
int)i) +
".");
438 t += s.substr(begPos);
450 for (
unsigned int i = 0; i < st.size(); i++)
454 st.erase(st.begin() + i);
467 unsigned int count = 0;
468 string::size_type index = s.find(pattern);
469 while (index != string::npos)
472 index = s.find(pattern, index + 1);
481 if (s.size() < pattern.size())
483 return s.substr(0, pattern.size()) == pattern;
490 if (s.size() < pattern.size())
492 return s.substr(s.size() - pattern.size()) == pattern;
499 if (s.size() < pattern.size())
501 for (
size_t i = 0; i < s.size() - pattern.size() + 1; ++i)
503 if (s.substr(i, pattern.size()) == pattern)
516 while (pos != string::npos) {
517 pos = target.find(query, pos);
518 target.replace(pos, query.length(), replacement);
519 pos += replacement.length();