mirror of
https://github.com/pocketpy/pocketpy
synced 2025-12-07 18:50:19 +00:00
move strip
This commit is contained in:
parent
07e07831c3
commit
6a70f535b3
@ -36,8 +36,8 @@ pkpy_Str pkpy_Str__slice2(const pkpy_Str* self, int start, int stop);
|
|||||||
pkpy_Str pkpy_Str__lower(const pkpy_Str* self);
|
pkpy_Str pkpy_Str__lower(const pkpy_Str* self);
|
||||||
pkpy_Str pkpy_Str__upper(const pkpy_Str* self);
|
pkpy_Str pkpy_Str__upper(const pkpy_Str* self);
|
||||||
pkpy_Str pkpy_Str__escape(const pkpy_Str* self, char quote);
|
pkpy_Str pkpy_Str__escape(const pkpy_Str* self, char quote);
|
||||||
// pkpy_Str pkpy_Str__strip(const pkpy_Str* self, bool left, bool right);
|
pkpy_Str pkpy_Str__strip(const pkpy_Str* self, bool left, bool right);
|
||||||
// pkpy_Str pkpy_Str__strip2(const pkpy_Str* self, bool left, bool right, const pkpy_Str* chars);
|
pkpy_Str pkpy_Str__strip2(const pkpy_Str* self, bool left, bool right, const pkpy_Str* chars);
|
||||||
pkpy_Str pkpy_Str__replace(const pkpy_Str* self, char old, char new_);
|
pkpy_Str pkpy_Str__replace(const pkpy_Str* self, char old, char new_);
|
||||||
pkpy_Str pkpy_Str__replace2(const pkpy_Str* self, const pkpy_Str* old, const pkpy_Str* new_);
|
pkpy_Str pkpy_Str__replace2(const pkpy_Str* self, const pkpy_Str* old, const pkpy_Str* new_);
|
||||||
pkpy_Str pkpy_Str__u8_getitem(const pkpy_Str* self, int i);
|
pkpy_Str pkpy_Str__u8_getitem(const pkpy_Str* self, int i);
|
||||||
|
|||||||
@ -161,8 +161,13 @@ struct Str: pkpy_Str {
|
|||||||
return pkpy_Str__slice(this, start);
|
return pkpy_Str__slice(this, start);
|
||||||
}
|
}
|
||||||
|
|
||||||
Str strip(bool left, bool right, const Str& chars) const;
|
Str strip(bool left, bool right, const Str& chars) const{
|
||||||
Str strip(bool left = true, bool right = true) const;
|
return pkpy_Str__strip2(this, left, right, &chars);
|
||||||
|
}
|
||||||
|
|
||||||
|
Str strip(bool left = true, bool right = true) const{
|
||||||
|
return pkpy_Str__strip(this, left, right);
|
||||||
|
}
|
||||||
|
|
||||||
Str lstrip() const { return strip(true, false); }
|
Str lstrip() const { return strip(true, false); }
|
||||||
|
|
||||||
|
|||||||
@ -175,44 +175,52 @@ pkpy_Str pkpy_Str__escape(const pkpy_Str* self, char quote){
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
// pkpy_Str pkpy_Str__strip(const pkpy_Str *self, bool left, bool right){
|
pkpy_Str pkpy_Str__strip(const pkpy_Str *self, bool left, bool right){
|
||||||
// const char* data = pkpy_Str__data(self);
|
const char* data = pkpy_Str__data(self);
|
||||||
// if(self->is_ascii) {
|
if(self->is_ascii) {
|
||||||
// int L = 0;
|
int L = 0;
|
||||||
// int R = self->size;
|
int R = self->size;
|
||||||
// if(left) {
|
if(left) {
|
||||||
// while(L < R && (data[L] == ' ' || data[L] == '\t' || data[L] == '\n' || data[L] == '\r'))
|
while(L < R && (data[L] == ' ' || data[L] == '\t' || data[L] == '\n' || data[L] == '\r'))
|
||||||
// L++;
|
L++;
|
||||||
// }
|
}
|
||||||
// if(right) {
|
if(right) {
|
||||||
// while(L < R && (data[R - 1] == ' ' || data[R - 1] == '\t' || data[R - 1] == '\n' || data[R - 1] == '\r'))
|
while(L < R && (data[R - 1] == ' ' || data[R - 1] == '\t' || data[R - 1] == '\n' || data[R - 1] == '\r'))
|
||||||
// R--;
|
R--;
|
||||||
// }
|
}
|
||||||
// return pkpy_Str__substr2(self, L, R - L);
|
return pkpy_Str__slice2(self, L, R);
|
||||||
// } else {
|
} else {
|
||||||
// pkpy_Str tmp;
|
pkpy_Str tmp;
|
||||||
// pkpy_Str__ctor(&tmp, " \t\n\r");
|
pkpy_Str__ctor(&tmp, " \t\n\r");
|
||||||
// pkpy_Str retval = pkpy_Str__strip2(self, left, right, &tmp);
|
pkpy_Str retval = pkpy_Str__strip2(self, left, right, &tmp);
|
||||||
// pkpy_Str__dtor(&tmp);
|
pkpy_Str__dtor(&tmp);
|
||||||
// return retval;
|
return retval;
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
|
|
||||||
// pkpy_Str pkpy_Str__strip2(const pkpy_Str *self, bool left, bool right, const pkpy_Str *chars){
|
pkpy_Str pkpy_Str__strip2(const pkpy_Str *self, bool left, bool right, const pkpy_Str *chars){
|
||||||
// int L = 0;
|
int L = 0;
|
||||||
// int R = pkpy_Str__u8_length(self);
|
int R = pkpy_Str__u8_length(self);
|
||||||
// pkpy_Str tmp;
|
if(left) {
|
||||||
// if(left) {
|
while(L < R){
|
||||||
// tmp = pkpy_Str__u8_getitem(self, L);
|
pkpy_Str tmp = pkpy_Str__u8_getitem(self, L);
|
||||||
// while(L < R && chars.index(u8_getitem(L)) != -1)
|
bool found = pkpy_Str__index(chars, &tmp, 0) != -1;
|
||||||
// L++;
|
pkpy_Str__dtor(&tmp);
|
||||||
// }
|
if(!found) break;
|
||||||
// if(right) {
|
L++;
|
||||||
// while(L < R && chars.index(u8_getitem(R - 1)) != -1)
|
}
|
||||||
// R--;
|
}
|
||||||
// }
|
if(right) {
|
||||||
// return pkpy_Str__u8_slice(self, L, R, 1);
|
while(L < R){
|
||||||
// }
|
pkpy_Str tmp = pkpy_Str__u8_getitem(self, R - 1);
|
||||||
|
bool found = pkpy_Str__index(chars, &tmp, 0) != -1;
|
||||||
|
pkpy_Str__dtor(&tmp);
|
||||||
|
if(!found) break;
|
||||||
|
R--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return pkpy_Str__u8_slice(self, L, R, 1);
|
||||||
|
}
|
||||||
|
|
||||||
pkpy_Str pkpy_Str__replace(const pkpy_Str *self, char old, char new_){
|
pkpy_Str pkpy_Str__replace(const pkpy_Str *self, char old, char new_){
|
||||||
pkpy_Str retval = pkpy_Str__copy(self);
|
pkpy_Str retval = pkpy_Str__copy(self);
|
||||||
|
|||||||
@ -23,39 +23,6 @@ Str::Str(pair<char*, int> detached) {
|
|||||||
assert(_ptr[size] == '\0');
|
assert(_ptr[size] == '\0');
|
||||||
}
|
}
|
||||||
|
|
||||||
Str Str::strip(bool left, bool right, const Str& chars) const {
|
|
||||||
int L = 0;
|
|
||||||
int R = u8_length();
|
|
||||||
if(left) {
|
|
||||||
while(L < R && chars.index(u8_getitem(L)) != -1)
|
|
||||||
L++;
|
|
||||||
}
|
|
||||||
if(right) {
|
|
||||||
while(L < R && chars.index(u8_getitem(R - 1)) != -1)
|
|
||||||
R--;
|
|
||||||
}
|
|
||||||
return u8_slice(L, R, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
Str Str::strip(bool left, bool right) const {
|
|
||||||
const char* data = pkpy_Str__data(this);
|
|
||||||
if(is_ascii) {
|
|
||||||
int L = 0;
|
|
||||||
int R = size;
|
|
||||||
if(left) {
|
|
||||||
while(L < R && (data[L] == ' ' || data[L] == '\t' || data[L] == '\n' || data[L] == '\r'))
|
|
||||||
L++;
|
|
||||||
}
|
|
||||||
if(right) {
|
|
||||||
while(L < R && (data[R - 1] == ' ' || data[R - 1] == '\t' || data[R - 1] == '\n' || data[R - 1] == '\r'))
|
|
||||||
R--;
|
|
||||||
}
|
|
||||||
return slice(L, R);
|
|
||||||
} else {
|
|
||||||
return strip(left, right, " \t\n\r");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
vector<std::string_view> Str::split(const Str& sep) const {
|
vector<std::string_view> Str::split(const Str& sep) const {
|
||||||
vector<std::string_view> result;
|
vector<std::string_view> result;
|
||||||
std::string_view tmp;
|
std::string_view tmp;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user