Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Split Kategorie: Programmierung (von André H. - 20.12.2003 14:49)
Als Antwort auf Re: Split von Johannes - 20.12.2003 14:04

Hallo Johannes,

Bevor Du noch mehr Selbstgespräche führst, schreibe ich lieber einmal etwas. :-)

Ich habe schnell ein kleine Routine geschrieben, welche dies sehr einfach löst:

function splitString(byte s[], string t[],byte searchfor) returns byte
{byte i,j,x;
 j=0;
 t[0]="";
 for i=0 ... s[31]-1
 {
  x=s[i];
  if x==searchfor
   {
    j=j+1;
    t[j]="";
   }
   else t[j]=t[j] + x;
 }
 return j+1;
}

thread main
{string s,t[10];
 s="Das ist ein Test";
 splitString(s,t,' ');
 string a,b,c,d,e;
 a=t[0];
 b=t[1];
 c=t[2];
 d=t[3];
 e=t[4];
 sleep -1;
}


Ich hab' den Code schnell im Simulator getestet, und es funzt ohne Probleme.
Darum gibt's auch die Variablen a bis e. :-) (Arrays kann man leider nicht überwachen)
Dies ist auf jeden Fall die schnellste Methode einen String aufzuteilen.
Schneller ginge es nurnoch mit ASM.
Ich werde die Funktion in strx.c2 übernehmen.

MfG André H.


> Tut mir leid, dass ich hier einen Monolog führe, aber André hat ja im Moment so viel zu tun, da kann
> ich wenigstens meine Fragen selbst beantworten ;-))
>
> Ich wollte noch schnell meinen neuen Quellcode posten, der nach meinen kurzen Tests funktioniert:
>
>
> function Split(string e, byte d, string r[]) {
>   int a;
>   int newindex;
>       newindex = 0;
>   int last;
>       last = -1;
>   int strlegth;
>   for a = 0...30 {
>     byte c;
>     strx.mid(e,c,a,1);
>     if c == d {
>      strlegth = (a) - (last + 1);
>      strx.mid(e,r[newindex],last + 1,strlegth);
>      newindex = newindex + 1;
>      last = a;
>     }
>   }
> }
>

>
> GruÃ?
> Johannes


Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Split (von Johannes - 20.12.2003 18:27)