#include "ml_string.h" // Replace a substring with a replacement string in a source string void replace_substring(std::string &src, const std::string &substr, const std::string &replacement) { size_t i = 0; for (i = src.find(substr, i); i != std::string::npos; i = src.find(substr, i)) { src.replace(i, substr.size(), replacement); i += replacement.size(); } } // Returns true if where contains regex bool regexp_search(const std::string &where, const std::string ®ex_str) { // online tester https://www.regextester.com/97722 std::regex regex(regex_str); std::smatch match; if (std::regex_search(where, match, regex)) { // std::cout << "matches for '" << where << "'\n"; // std::cout << "Prefix: '" << match.prefix() << "'\n"; // for (size_t i = 0; i < match.size(); ++i) // std::cout << i << ": " << match[i] << '\n'; // std::cout << "Suffix: '" << match.suffix() << "\'\n\n"; return true; } return false; } std::string string_padd(const std::string &str, int pad_len, char fill_char, bool from_right) { int str_len = str.length(); if (str_len == pad_len) return str; else if (str_len > pad_len) { return (from_right ? str.substr(0, pad_len) : str.substr(str_len - pad_len, std::string::npos)); } if (from_right) return str + std::string(pad_len - str.size(), fill_char); else return std::string(pad_len - str.size(), fill_char) + str; }