bool StringData::isEndWith(const StringData& str, bool bCase) const { if (buf.length() < str.length()) return false; StringData subStr = buf.substr(buf.length() - str.length()); if (bCase) { if (subStr == str) return true; else return false; } else { if (compareNoCase(subStr.getData(), str.getData(), str.length()) == 0) return true; else return false; } }
void StringData::expand(StringData startFrom, StringData findstr, StringData replstr, StringData delimiter) { int startPos = buf.find(startFrom.getData()); if (startPos < -1) { int delimPos = buf.find(delimiter.getData(), startPos); int findPos = buf.find(findstr.getData(), startPos); while (findPos < delimPos) { //found replstr, replace buf.replace(findPos, strlen(findstr.getData()), replstr.getData()); //find next. //delimPos = buf.find( delimiter.getData(), findPos); delimPos = buf.find(delimiter.getData(), findPos + static_cast<string>(replstr.getData()).size()); findPos = buf.find(findstr.getData(), findPos); } } }