/********************************************************************** * Copyright (c) 2002, Leo Seib, Hannover * * Project:SQLiteDataset C++ Dynamic Library * Module: StringHelper class realisation file * Author: Leo Seib E-Mail: lev@almaty.pointstrike.net * Begin: 5/04/2002 * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * **********************************************************************/ #include "stringhelper.h" str_helper::str_helper() {work_str = "";} str_helper::str_helper(const char *s){work_str = s;} string str_helper::get_str() {return work_str;} void str_helper::set_str(const char *s) {work_str = s; }; string str_helper::before(string s, bool &is_found) { is_found = false; int pos = work_str.find(s); int idx = pos+s.length(); is_found = pos >= 0; if (idx == (int) work_str.length()) return work_str.substr(0,pos); else if ((pos >= 0) && (!( (work_str[idx]>48 && work_str[idx]<58) || (work_str[idx]>64 && work_str[idx]<91) || (work_str[idx]>97 && work_str[idx]<123) || work_str[idx]==95 ))) return work_str.substr(0,pos); else //return (string)NULL; { string tmp(""); return tmp; } } string str_helper::after(string s) {return work_str.substr(work_str.find(s)+s.length(),work_str.length());} string str_helper::replace(string pattern, string by_what) { bool is_found; string bf = before(pattern,is_found); string aft(""); string result(""); while (is_found) { aft = after(pattern); result = bf + by_what + aft; work_str.assign(result); bf = before(pattern,is_found); } if (result.length()==0) result = work_str.c_str(); return result; }