83 lines
2.2 KiB
C++
83 lines
2.2 KiB
C++
#include "pfc.h"
|
|
|
|
namespace pfc {
|
|
|
|
t_size string::indexOf(char c,t_size base) const {
|
|
return pfc::string_find_first(ptr(),c,base);
|
|
}
|
|
t_size string::lastIndexOf(char c,t_size base) const {
|
|
return pfc::string_find_last(ptr(),c,base);
|
|
}
|
|
t_size string::indexOf(stringp s,t_size base) const {
|
|
return pfc::string_find_first(ptr(),s.ptr(),base);
|
|
}
|
|
t_size string::lastIndexOf(stringp s,t_size base) const {
|
|
return pfc::string_find_last(ptr(),s.ptr(),base);
|
|
}
|
|
t_size string::indexOfAnyChar(stringp _s,t_size base) const {
|
|
string s ( _s );
|
|
const t_size len = length();
|
|
const char* content = ptr();
|
|
for(t_size walk = 0; walk < len; ++walk) {
|
|
if (s.contains(content[walk])) return walk;
|
|
}
|
|
return ~0;
|
|
}
|
|
t_size string::lastIndexOfAnyChar(stringp _s,t_size base) const {
|
|
string s ( _s );
|
|
const char* content = ptr();
|
|
for(t_size _walk = length(); _walk > 0; --_walk) {
|
|
const t_size walk = _walk-1;
|
|
if (s.contains(content[walk])) return walk;
|
|
}
|
|
return ~0;
|
|
}
|
|
bool string::startsWith(char c) const {
|
|
return (*this)[0] == c;
|
|
}
|
|
bool string::startsWith(string s) const {
|
|
const char * walk = ptr();
|
|
const char * subWalk = s.ptr();
|
|
for(;;) {
|
|
if (*subWalk == 0) return true;
|
|
if (*walk != *subWalk) return false;
|
|
walk++; subWalk++;
|
|
}
|
|
}
|
|
bool string::endsWith(char c) const {
|
|
const t_size len = length();
|
|
if (len == 0) return false;
|
|
return ptr()[len-1] == c;
|
|
}
|
|
bool string::endsWith(string s) const {
|
|
const t_size len = length(), subLen = s.length();
|
|
if (subLen > len) return false;
|
|
return subString(len - subLen) == s;
|
|
}
|
|
|
|
char string::firstChar() const {
|
|
return (*this)[0];
|
|
}
|
|
char string::lastChar() const {
|
|
const t_size len = length();
|
|
return len > 0 ? (*this)[len-1] : (char)0;
|
|
}
|
|
|
|
string string::replace(stringp strOld, stringp strNew) const {
|
|
t_size walk = 0;
|
|
string ret;
|
|
for(;;) {
|
|
t_size next = indexOf(strOld, walk);
|
|
if (next == ~0) {
|
|
ret += subString(walk); break;
|
|
}
|
|
ret += subString(walk,next-walk) + strNew;
|
|
walk = next + strOld.length();
|
|
}
|
|
return ret;
|
|
}
|
|
bool string::contains(char c) const {return indexOf(c) != ~0;}
|
|
bool string::contains(stringp s) const {return indexOf(s) != ~0;}
|
|
bool string::containsAnyChar(stringp s) const {return indexOfAnyChar(s) != ~0;}
|
|
}
|