Hallo Leute!
ich muss einen String teilen, bei dem der Delimiter länger als ein Buchstabe ist, um genau zu sein soll mein DeIlimiter "~n~" sein. Weiß jemand die dazugehörige Funktion bzw. wo schon jemand so eine Funktion gescriptet hat?
Danke.
Hallo Leute!
ich muss einen String teilen, bei dem der Delimiter länger als ein Buchstabe ist, um genau zu sein soll mein DeIlimiter "~n~" sein. Weiß jemand die dazugehörige Funktion bzw. wo schon jemand so eine Funktion gescriptet hat?
Danke.
Google mal nach Split String oder String Splitten.
Funktion:
stock split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
Wenn du schon versuchst zu helfen, dan lies vorher mal genau den ersten Post durch. Ich habe extra erwähnt das mein delimiter mehrere Buchstaben hat und dieses split von dir kann nur einen überprüfen, wenn du genau schaust.
Ehm nein, du kannst damit auch mehrere zeichen splitten.
ich kann zb.
125,6843,58692,83038,639046
Jede Zahl vor dem komma einer variable zuweisen mit meinem split.
Sry, aber jetzt verlier ich langsam meine Geduld, ich habe geschrieben mein delimiter und der delimiter ist das Trennzeichen, was bei dir das Komma ist, bei mir ist der Delimiter aber größer als ein Zeichen. Bitte lies und denke vorher nach. EIn Beispiel wenn du immernoch nicht verstanden hast:
String: ad---rgerg---erggerg---ergergerg
Delimiter: ---
Entstandene Strings: 4
Mit sscanf würde das gehen.
new string[4][128];
sscanf(dein_string,"p<~n~>s[128]s[128]s[128]s[128]",string[0],string[1],string[2],string[3]);
mit p<> bestimmst du den delimiter, also in dem falle ~n~
Ach sorry, ich war nicht ganz dabei, ja jetzt habe ich es verstanden... mein Fehler tut mir leid.
new TestStr[64];
new FinalResult[2][64];
strins(TestStr, "Hallo wie geht~n~es dir", 0, 64);
new strPos = strfind(TestStr, "~n~");
strmid(FinalResult[0], TestStr, 0, strPos);
strmid(FinalResult[1], TestStr, strPos+3, strlen(TestStr));
Damit kannst du sicherlich etwas anfangen, eine Funktion kannste ja damit sicherlich selber erstellen, dürfte nicht schwer sein.
FinalResult[0] beinhaltet: Hallo wie geht
und
FinalResult[1] beinhaltet: es dir.
PS: Ein bisschen mehr Freundlichkeit wäre auch nicht schlecht, ich versuche zu helfen und werde hier unfreundlich angemacht....
Danke, das wären gute Beispiele gewesen, aber ich weiß leider nicht bei meinem String wir oft ~n~ vorkommt, also kann ich beides nicht verwenden, habe mal versucht die split funktion so umzuschreiben dass es mit einem delimiter funzt der mehr Zeichen hat, falls er funktioniert, stell ich die Funktion hier rein, da ich heute gut drauf bin^^
Falls sie nicht funzt ist mir grade so ne extrem einfache möglichkeit eingefallen, wie ich es mit normalen split verwenden kann, einfach vorher str-replace durchführen hahahah xD
Hat nicht ganze funktioniert, dann will ich auch nicht länger Zeit vergäuden und machs mit http://wiki.sa-mp.com/wiki/Strlib:str-replace und der normalen split funktion.