#include "StringUtils.h" #include using namespace std; void StringUtils::replaceAll(string& str, const string& pattern, const string& repl){ const string::size_type PATTERN_LEN = pattern.length(); const string::size_type REPL_LEN = repl.length(); string::size_type pos = 0; while(((pos = str.find(pattern, pos)) != string::npos && pos < str.length() )){ str.replace(pos, PATTERN_LEN, repl); pos += REPL_LEN; } } string StringUtils::replaceAllRet(const string& str, const string& pattern, const string& repl) { string str2 = str; replaceAll(str2, pattern, repl); return str2; } void StringUtils::deleteChunk(string& str, int start, int length){ str.replace(start, length, ""); } // chop last char (a la perl) void StringUtils::chop(string& str){ deleteChunk(str, str.length()-1); } void StringUtils::win2unixPath(string& winPath){ replaceAll(winPath, "\\", "/"); } void StringUtils::squeezeDuplicates(string& str, char squeeze) { const string SQUEEZE = string(2,squeeze); int oldlen = str.length()+1; while(oldlen > str.length()){ oldlen = str.length(); replaceAll(str, SQUEEZE, string(1,squeeze)); } } void StringUtils::unix2winPath(string& unixPath){ squeezeDuplicates(unixPath, '/'); replaceAll(unixPath, "/", "\\"); }