class StringTokenizer {
public:
StringTokenizer(String stringToParse, char _token) {
fData = stringToParse;
fToken = _token;
fCount = getCountParts();
fStrings = new String[fCount];
parseData();
}
~StringTokenizer() {
delete []fStrings;
}
__property int count = { read = fCount };
__property char token = { read = fToken };
__property String data = { read = fData };
__property String strings[int n] = { read = getString };
private:
String* fStrings;
int fCount;
String fData;
char fToken;
int getCountParts() {
int c = 0;
int ln = fData.Length();
for(int j = 0; j < (ln+1); j++) {
char ch = (data.c_str())[j];
if(ch==token || ch=='\0') {
c++;
}
}
return c;
};
String getString(int n) {
if (n<0 || n>fCount) {
return "index out of bounds";
} else {
return fStrings[n];
}
};
void parseData() {
int c = 0;
String buffer = "";
int ln = fData.Length();
for(int j = 0; j < (ln+1); j++) {
char ch = (data.c_str())[j];
if(ch==token || ch=='\0') {
fStrings[c] = buffer;
c++;
buffer = "";
} else {
buffer+=String(ch);
}
}
};
};
Аналог StringTokenizer в VCL
В Java есть удобный класс StringTokenizer. Может, кто-нить знает аналог этого класса в VCL?
Вот решил сам написать :)
Цитата: Starlit
Вот решил сам написать :)
если будут замечания/предложения — с радостью выслушаю. Заранее спасибо.
если будут замечания/предложения — с радостью выслушаю. Заранее спасибо.
Код:
class StringTokenizer {
...
};
...
};
спасибо конечно. А чем вас не устраивает стандартные методы класса TStrings? например DelimitedText? Это так - к слову. Функциональность вашего класса не проверял.
Честно говоря, забыл про эту функцию. Спасибо, посмотрю, может она удобнее моего класса.